gpt4 book ai didi

使用 Scanner.next() 时出现 java.util.NoSuchElementException

转载 作者:行者123 更新时间:2023-11-29 05:04:19 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com