Java 新手正在从事一个项目,我应该在该项目中将从文本文件中获得的数据显示到网格上。项目基本上是写的,但是输出显示这个异常:
run:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at inputOutput.ReadDataFile.populateData(ReadDataFile.java:50)
at boggle.Boggle.main(Boggle.java:27)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
Boggle.java:27
链接到我的父类(super class) Boggle.java 的主要方法中的一行代码。该行应该调用我的类 ReadDataFile.java 中的方法之一。该行显示为 dataRead.populateData();
(//2. 在下面的评论中),在上下文中,主要方法如下所示:
public static void main(String[] args) { //main() method begins
// TODO code application logic here
ReadDataFile dataRead = new ReadDataFile("BoggleData.txt"); //1. instance of class ReadDataFile created
dataRead.populateData(); //2. populateData() method called
boggleData = dataRead.getData(); //3. member variable set equal to getData() method
Board boggleBoard = new Board(boggleData); //4. instance of class Board created, passing data as argument
boggleBoard.shakeDice(); //5. shakeDice() method called
} //main() method ends
ReadDataFile.java:50
链接到我的子类 ReadDataFile.java 中名为 populateData() 的方法中的一行。该行是 input.next();
并且它位于我为该类创建的 try-catch-finally 的 finally 组件中。在上下文中,populateData() 方法如下所示:
public void populateData(){ //populateData() method begins
try{ //try begins
URL url = getClass().getResource(dataFile); //1. instance of class URL created from file name
File file = new File(url.toURI()); //2. instance of class File based on url
input = new Scanner(file); //3. member variable initialized based on file
while(input.hasNext()){ //4. while loop goes through data file
data.add(input.next()); //a. data from file added to ArrayList
}
} //try ends
catch(Exception ex){ //catch begins
System.out.println(ex.toString());
ex.printStackTrace();
} //catch ends
finally{ //finally begins
input.next();
} //finally ends
} //populateDate() method ends
基本上,我无法弄清楚如何解决此异常。该项目的实际目标是在网格中显示数据,但我只注意到在输出中发现了异常。代码编译得很好,所以我不担心分号放错位置或数据类型不正确。我是 Java 语言的新手,虽然书籍和其他 stackoverflow 问题已经解决了我的一些问题,但这个异常让我陷入困境。
是否有人能够就我需要做什么来解决输出中出现的异常、导致异常的原因提供一些反馈,或者至少引导我朝着正确的方向前进?我真的很感激任何有用的评论。谢谢。
最佳答案
您的异常堆栈跟踪显示了问题所在:
at inputOutput.ReadDataFile.populateData(ReadDataFile.java:50)
在第 50 行你有这个:
finally{ //finally begins
input.next();
}
问题是您已经用之前执行的循环耗尽了文件:
while(input.hasNext()){ //4. while loop goes through data file
data.add(input.next()); //a. data from file added to ArrayList
}
关于使用 Scanner.next() 时出现 java.util.NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949475/