簡體   English   中英

文件掃描儀nosuchelementexception

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM