1

さて、csv ファイルをインポートし、結果をループして配列にロードする Java アプリケーションを作成しています。例外を介していないため、ファイルを正しくインポートしています。私の問題は、FileInputStream 内のレコード数をカウントしようとすると、無限ループに陥ることです。ここで何が問題になる可能性がありますか。コードは次のとおりです。

これは、go() を呼び出す Main メソッドを持つ私のクラスです。

public void go() {
    pop = new PopularNames();
    popGui = new PopularNamesGui();
    String file = popGui.userInput("Enter the correct name of a file:");
    pop.setInputStream(file);
    pop.getNumberOfNames();
}

これはクラス PopularNames (pop) です。以下のメソッドでは、inputStream 変数を新しい FileINputStream に設定しています。ファイル名はユーザーが指定します。

public void setInputStream(String aInputStream) {
    try {
        inputStream = new Scanner(new FileInputStream(aInputStream));
    } catch (FileNotFoundException e) {
        System.out.println("The file was not found.");
        System.exit(0);
    }
}

これがトラブルの方法です。FileInputStream を単純にループして、レコード数を数えているところ:

public void getNumberOfNames() {
    while (this.inputStream.hasNext()) {
        fileDataRows++;
    }
}
4

1 に答える 1

7
public void getNumberOfNames() {   
  while (this.inputStream.hasNext()) {   
     inputStream.nextLine(); // Need to read it so that we can go to next line if any
     fileDataRows++;    
  } 
}
于 2011-10-18T05:24:32.620 に答える