1

以下のコードは、インポートされたファイルに 100 以上の数字が含まれている場合に機能します。ファイルに残っている数値が 100 未満の場合、ループを停止するにはどうすればよいですか? 数値が 100 未満の場合、配列がいっぱいではないため、エラーが発生します。

try {
    Scanner in = new Scanner(new File(filename));
    int[] aNums = new int[100];
    System.out.print("Array contents: ");
    int i =0;
    while (i < aNums.length){
        generated = in.nextInt() ;
        aNums[i] = generated;
        System.out.print( aNums[i] );
        System.out.print(" ");
        i++;
    }
    System.out.println(" ");
    System.out.println(" ");
    System.out.print("Array contents: ");
    for (i = aNums.length - 1; i >= 0; i--) {
        System.out.print( aNums[i] );
        System.out.print(" ");
    }
}
// Catch block, needed when using file input
catch (FileNotFoundException e) {
    System.out.println("That file was not found. Program terminating...");
    e.printStackTrace();
}
4

3 に答える 3

2

ファイルにさらに値がある場合は、スキャナーを確認してください。

while (i < len && in.hasNextInt())
于 2013-02-07T22:07:21.103 に答える
0

これを試して:

List<Integer> integerList = new ArrayList<Integer>();

while(in.hasNextInt()) {
  integerList.add(in.nextInt());
}
int totalNum = integerList.size();
for(int i = 0; i < 100 && totalNum - i > 100; i++) {
   aNums[i] = integerList.get(i);
}
于 2013-02-07T23:02:55.467 に答える
0

これを試して

File file = new File(filename);
Scanner in = new Scanner(file);
int[] aNums = new int[file.length()];

私はそれを試しませんでした..うまくいくことを願っています

于 2013-02-07T22:23:43.317 に答える