以下代碼應從.dat文件讀取5個字符串,然後從每個字符串中打印每個單獨的字符。Java charAt()方法在For循環中崩潰
File file = new File("tictactoe.dat");
Scanner scan = new Scanner(file);
String str = "";
int x;
for (x = 0; x < numGames; x++) {
str = scan.nextLine();
for (int i = 0; i < str.length(); i++) {
out.println(str.charAt(i));
}
}
但是程序會拋出一個StringIndexOutOfBoundsException
。 Scanner
沒有什麼不對,因爲測試表明它在我的文件中記錄了每一行。但是當試圖獲取並在每個字符串中打印某個字符時,程序會崩潰。
奇怪的是,在循環外charAt()
工作沒有錯誤。
爲什麼在循環中調用方法會導致程序崩潰?
更新:我犯了一些荒謬的錯誤複製我使用的代碼。請參閱上面的更新代碼。此外,由於StringIndexOutOfBoundsException
,該程序「崩潰」,我不感興趣。
是否每個行至少有numGames字符呢? –
是的。沒有問題的字符串的長度。 –
當你說「崩潰」時,你的意思是一個致命的異常(具有我們可以看到的堆棧跟蹤的事情)或JVM轉儲式崩潰? – user1201210