![](/img/trans.png)
[英]Java Scanner hasNextLine NoSuchElementException?
[英]Java issues with Scanner and hasNextLine() while reading a file
我對這個未完成的程序有疑問。 我不明白為什么當我運行它時會返回“未找到行異常”。 我設置了一個 while 循環,其目的是檢查這一點,但我做錯了什么。 我正在嘗試將文件中的信息存儲到類的二維數組中。
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.File;
import java.util.Arrays;
public class LabProgram {
public static void main(String[] args) throws IOException {
Scanner scnr = new Scanner(System.in);
int NUM_CHARACTERS = 26; // Maximum number of letters
int MAX_WORDS = 10; // Maximum number of synonyms per starting letter
String userWord = (scnr.next()) + ".txt"; //Get word user wants to search
char userChar = scnr.next().charAt(0); //Get char user wants to search
String[][] synonyms = new String[NUM_CHARACTERS][MAX_WORDS]; // Declare 2D array for all synonyms
String[] words = new String[MAX_WORDS]; // The words of each input line
File aFile = new File(userWord);
Scanner inFile = new Scanner(aFile);
while(inFile.hasNextLine()) {
for(int i = 0; i < synonyms.length; i++) {
words = inFile.nextLine().trim().split(" ");
for(int wordCount = 0; wordCount < words.length; wordCount++) {
synonyms[i][wordCount] = words[wordCount];
}
}
}
}
}
問題在於這個 for 循環:
for (int i = 0; i < synonyms.length; i++) {
words = inFile.nextLine().trim().split(" ");
....
}
您正在從i=0
迭代到synonym.length-1
次,但該文件沒有這么多行,因此,一旦您的文件超出行但 for 循環有更多迭代范圍, inFile.nextLine()
沒有行,因此拋出異常。
我不知道你在這里到底在做什么或想通過這段代碼實現什么,但這就是給你帶來麻煩的原因。
希望能解答您的疑問。
基本上你的問題是你只在for
循環開始之前檢查hasNextLine()
,你實際上是在循環的每次迭代中獲得下一行。 因此,如果在for
循環中間用完行,則會引發異常。
我實際上不太確定你的代碼應該做什么,但至少你需要在每次實際運行nextLine()
之前添加一個hasNextLine()
檢查以避免這樣的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.