[英]File Scanner nosuchelementexception
我有以下代碼( 在其中是文件掃描器):
while(in.hasNext()){
for (int i = 0; i < 50; i++) {
for (int j = 0; j < 50; j++) {
System.out.println(i+", "+j);
String se = in.next();
char c = se.charAt(0);
maze[i][j] = c;
}
}
}
每次我運行它時,它都以0.49結束,然后給我一個NoSuchElementException。 如果我將for循環中的50s減少到49,它會在1,0處停止並引發異常。 怎么了? 我在做什么?
另外,如果您必須知道,我正在閱讀的文件是50x50的文字牆。
您的while循環未充分檢查掃描程序是否可以實際讀取下一行。 在每次調用scanner.next()之前,均應先調用scanner.hasNext()(以確保您正在讀取的輸入確實存在)。 您的代碼每50 * 50讀取一次。 為了解決這個問題,如果不存在輸入,您將想要通過執行類似的操作來停止循環
while(in.hasNext()){
for (int i = 0; i < 50; i++) {
for (int j = 0; j < 50; j++) {
if(!in.hasNext())
break;
System.out.println(i+", "+j);
String se = in.next();
char c = se.charAt(0);
maze[i][j] = c;
}
}
}
要么
while(in.hasNext()){
for (int i = 0; i < 50; i++) {
for (int j = 0; j < 50&&in.hasNext(); j++) {
System.out.println(i+", "+j);
String se = in.next();
char c = se.charAt(0);
maze[i][j] = c;
}
}
}
這兩者都應在調用下一個存在的輸入之前進行檢查,如果不存在則退出循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.