0
public class FrameViewer
{

    String csvName = "none";
    public static void main(String[] args)throws IOException
    {
        System.out.println("Which file would you like to open?" + " A - asia.csv" + " B - europe.csv" + " C - africa.csv");
        Scanner input = new Scanner(System.in);
        String csvName = input.next();

        if (csvName.equals("A"))
            csvName = "asia.csv";
        else if (csvName.equals("B"))
            csvName = "europe.csv";
        else if (csvName.equals("C"))
            csvName = "africa.csv";
        else
            System.out.println("You havent chosen a file.");

ここの間で問題が発生しました。キャンバスが下に作成されたときに、CountryComponent クラスが CountryComponent メソッド内で行われた選択から「csvName」を参照するという仮定の下で行っていましたが、そうではありませんでした

私は今絶対に迷っています。選択肢をパラメーターとして getData メソッドに渡してみたかったのですが、選択肢自体を渡す方法がわかりませんでした。エラーが発生し続けました。

問題を引き起こしている可能性があるため、コンポーネントクラスのインスタンス変数 csvName を残しましたが、idk、それなしではコンパイルできません。

        JFrame frame = new JFrame();
        frame.setSize(750, 650);
        frame.setTitle("Country Data");
        CountryComponent canvas = new CountryComponent();
        frame.add(canvas);
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

コンポーネント クラス

public class CountryComponent extends JComponent
{

    // instance variables

    String csvName;   

    public void CountryComponent()throws IOException
    {

        getData(); 

    }

    public void getData()throws IOException
    {
       ...

これは私が試したものです。最後の試みです。実際に表示される情報を取得するために 20 の異なることを試みました。

 public void CountryComponent(String test)throws IOException
{
    String csv = test;
    getData(csv); 

}

public void getData(String csv1)throws IOException
{
    try
    {
        csvName = csv1;
        File csvFile = new File(csvName);

これはコンパイルされましたが、FrameViewer クラスのこの行でエラーが発生しました

CountryComponent canvas = new CountryComponent(csvName);
4

1 に答える 1