0

形式のファイルに格納されている 2D 配列を読み取るために stringTokenizer メソッドを使用しようとしています。

1 1
1 1 

コードは...

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
for(int i=0;i<n;i++)
                for(int j=0;j<n;j++){
                    StringTokenizer tok = new StringTokenizer(in.readLine());
                    t[i][j]=Integer.parseInt(tok.nextToken());
                }

これを実行すると、java.lang.NullPointerException エラーが発生します。ただし、これをファイルで使用すると

1 1 1 1

コードは機能します!
なぜそれが起こっているのですか?

4

1 に答える 1

2

ネストされたループStringTokenizerでオブジェクトの宣言/インスタンス化を行うことにより、オブジェクトはネストされたループの範囲外には存在しません。したがって、これが実際に行うことは、ネストされたループを繰り返すだけなので、読み取るものはすべて水平方向のみです。ネストされたループの外側と親ループの内側を移動しても、ネストされたループのスコープ内に残ります。これで問題が解決するはずです。forStringTokenizerStringTokenizer

Move: StringTokenizer tok = new StringTokenizer(in.readLine());ネストされたループの上。

于 2012-08-02T18:27:02.983 に答える