0

ファイルから一連の整数を ArrayList に読み込もうとしていますが、numbers.get(0) にアクセスすると、おそらくリストに何も書き込まれていないため、範囲外の例外が発生します。

ArrayList<Integer> numbers = new ArrayList<Integer>();

public void Numbers() throws IOException{

  File file = new File("Numbers.txt");
  Scanner inputFile = new Scanner(file);

  while (inputFile.hasNext()){

    numbers.add(inputFile.nextInt());
  }

    inputFile.close();
}

どんな助けでも大歓迎です。必要に応じて、さらにコード スニペットを提供できます。

4

2 に答える 2

4

考えられる問題の 1 つは、メソッドを次のように宣言したことです。

public void Numbers() throws IOException

これは、Numbersを返しvoid、スローするメソッドIOExceptionです。戻り値の型を宣言しているため、これは意図したコンストラクタではないことに注意してください。numbers.get(0)この同じクラスの別のメソッドを呼び出している場合。このNumbers()メソッドは、コンストラクターとして自動的に呼び出されると予想される場合、おそらく明示的に呼び出されません。

于 2012-11-29T00:39:12.663 に答える
1

トークンを読み取ろうとしていると思いますがint、例外が発生します。これを試して:

try{
   File file = new File("Numbers.txt");
   Scanner inputFile = new Scanner(file);
   while (inputFile.hasNext()){
    String next = inputFile.next();
    try{
        numbers.add(Integer.valueOf(next));
     }catch(NumberFormatException nfe){
       //not a number, ignore it
     }
   }
 }catch(IOException ioe){
      ioe.printStackTrace();
 }
于 2012-11-29T00:40:09.413 に答える