所以我们有一个实验室要做,它涉及读取文件和所有有趣的东西。这是 txt 文件的样子:Name0221.2Name1222.71Name2193.51Name3183.91Name4201.6Name5191.03Name6183.78Name7193.19Name8182.37Name9211.01我发布了应该尝试读取此信息的代码。谢谢你的时间!我试过改变一些东西并用谷歌搜索异常但没有运气 public void readFile() { //ran intill exception caught try { //finds the student.txt file to read using scanners Scanner s = new Scanner("Students.txt"); while(s.hasNextLine()) { //sets a string name to the first string (First text in students is name) String name = s.next(); //looks for a line with a int value and then sets it to age int age = s.nextInt(); //scans the next line for a double and sets it to gpa double gpa = s.nextDouble(); //creates a new student object and passes what the file read into parameters Student studentOne = new Student(name , age, gpa); //adds new student to array list students.add(studentOne); } s.close(); } // if an exception is caught it will print catch(Exception e) { System.out.println(e); } }我相信它应该读取信息并将其存储在受尊重的类别中,因为我们知道它是根据文本文件按此顺序进行的,但是当我运行该方法时,我得到了 java.util.NoSuchElementException
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
您收到NoSuchElementException是因为在对象上调用nextInt()和nextDouble()方法Scanner不会读取换行符(点击返回时创建的字符) - 请参阅此答案。
要解决此问题,您可以执行以下操作:
public void readFile() throws IOException {
try (Scanner s = new Scanner(new FileReader(new ClassPathResource("Students.txt").getFile()))) {
while (s.hasNextLine()) {
String name = s.nextLine();
int age = Integer.parseInt(s.nextLine());
double gpa = Double.parseDouble(s.nextLine());
Student studentOne = new Student(name, age, gpa);
students.add(studentOne);
}
}
}
注意 - 上面的代码假定该Students.txt文件在您的类路径中。
添加回答
举报
0/150
提交
取消