アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めに行数があり、次に6つのスペースで区切られた数字を一行ずつ計算していくというプログラムが作りたいのですが、実行後
Exception in thread "main" java.lang.NullPointerException at java.util.StringTokenizer.<init>(StringTokenizer.java:182) at java.util.StringTokenizer.<init>(StringTokenizer.java:219) at example.main(example.java:36)
のようなエラーが出てきます。下記がそのプログラムですが、stのコンストラクタがループの中に入っているせいだと思い、ループの外でコンストラクトしようと考えたのですがうまくいかずいきづまってしまいました。
どなたかご教示いただけませんでしょうか。よろしくお願いいたします。

int c=0;
String line ;
int ln = Integer.parseInt(br.readLine());
for(int i = 0; i < ln; i++) {
line=br.readLine();
StringTokenizer st = new StringTokenizer(line);
for(j = 0; j <= 5; j++) {
c=Integer.parseInt(st.nextToken());
intArray[j]=c;
}
(計算)
}

A 回答 (1件)

ファイルの終了まで読み込むと、


 line=br.readLine();
のところでnullが返されます。

そして、
 StringTokenizer st=new StringTokenizer(line)
の時点でlineがnullだと、ご質問のようなExceptionが発生します。

そのためファイル読み込みが終了した時点でループを抜けるように、
 line=br.readLine();
の直後に
 if(line==null){
  break;
 }
を入れてループを抜けるようにすればよいと思います。
    • good
    • 0
この回答へのお礼

Exception表示が消えました!
それだったら回数が合ってないはずで、でも行数の方は間違いないのにと思っていたら、(計算)のところでiを使ってしまっていました。
本当に助かりました。

お礼日時:2008/06/29 18:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!