"items.txt"ファイルから入力を受け取り、 "changes.txt"に従って行を追加または削除し、別のファイルに出力するプログラムを作成しています。Java StringIndexOutOfBoundsException
これは "items.txt" ファイルです:
A,106,Chainsaw 12"
D,102
d,104
a,107,Chainsaw 10"
これは問題を抱えている私の方法である(void changes()
は、行番号132である):これは、変更がファイルである
101,Nail #1
102,Nail #2
103,Nail #3
104,Hammer Small
105,Hammer Large
:
void changes() {
try {
fileChange = new Scanner(new File("changes.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
fileChange.useDelimiter(",|\r|\n");
while (fileChange.hasNext()) {
String codeStr = fileChange.next();
if ((codeStr.charAt(0) == 'D') || (codeStr.charAt(0) == 'd')) {
delete(fileChange.nextInt());
System.out.println("delete");
} else if ((codeStr.charAt(0) == 'A') || (codeStr.charAt(0) == 'a')) {
add(fileChange.nextInt(), fileChange.next());
System.out.println("add");
} //else
System.out.println("done");
}
fileChange.close();
}
これは、私が手に出力されます:
add
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
done
以前の問題の診断に役立つように、「追加」と「完了」の印刷文を追加しました。 "add"と "done"を出力しても、何も出力ファイルに送られません。私はこれがStringIndexOutOfBoundsExceptionのためだと推測します。
これは私の最初の質問です。オーバーフローが発生しましたので、フォーマット上の問題や不適切な礼儀でお待ちください。
デバッガを使用して、コードをステップ実行します。クラッシュ時に使用する値を見てください。 – Robert
後で繰り返しが例外をスローする可能性があります。 (sry、私は今酔っています)どの行が例外をスローしますか? –
おそらく、空の入力の最初の文字をチェックしようとします(全く文字がありません)。 – Robert