練習のために試験をやり直しましたが、ほぼ完了しました。私が持っている唯一の問題は、この部分にあります:
int z=0,x=0;
String line="";
RandomAccessFile read = new RandomAccessFile(s, "rw");
while((read.readLine())!=null)
z++;
read.seek(0);
while(x<z){
line=read.readLine();
StringTokenizer stk = new StringTokenizer(line, " ");
if(line.charAt(0)=='r'){
nr=z;
nc=stk.countTokens()-1;
valori = new int[nr][nc];
while(stk.hasMoreTokens()){
stk.nextToken();
for(int i=0; i<nr; i++)
for(int j=0; j<nc; j++)
valori[i][j] = Integer.parseInt(stk.nextToken());}
}
else if(line.charAt(0)=='c'){
nr=stk.countTokens()-1;
nc=z;
valori = new int[nr][nc];
while(stk.hasMoreTokens()){
stk.nextToken();
for(int i=0; i<nr; i++)
for(int j=0; j<nc-1; j++)
valori[j][i] = Integer.parseInt(stk.nextToken());}
}x++;
基本的に、次のように行列の説明があるファイルを読み取る必要があります。
c 0 1 0
c 0 0 1
c 0 0 0
c 1 0 0
結果の行列は次のようになります。
|0|0|0|1|
|1|0|0|0|
|0|1|0|0|
ファイルを読んだ後、2d int 配列でマトリックスを構築する必要があります。別の演習で同じコードを使用しましたが、stk.nextToken() を使用すると、java.util.StringTokenizer.nextToken(Unknown Source) で java.util.NoSuchElementException が発生します。 )
エラーが見つかりません。2 次元配列は正しく初期化され、埋められています。
助けてくれてありがとう。