我收到错误列表:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at StudentGrade.main(StudentGrade.java:21)
我从我的Java编程书中复制了一个示例程序,找出为什么我不能通过使用这个程序作为基础让我的其他程序工作。
import java.io.*;
import java.util.*;
public class StudentGrade
{
public static void main(String[] args) throws
FileNotFoundException
{
double test1, test2, test3, test4, test5;
double average;
String firstName;
String lastName;
Scanner inFile =
new Scanner(new FileReader("test.txt"));
PrintWriter outFile = new
PrintWriter("testavg.out");
firstName = inFile.next();
lastName = inFile.next();
outFile.println("Student Name: "
+ firstName + " " + lastName);
test1 = inFile.nextDouble();
test2 = inFile.nextDouble();
test3 = inFile.nextDouble();
test4 = inFile.nextDouble();
test5 = inFile.nextDouble();
outFile.printf("Test scores: %5.2f %5.2f %5.2f "
+ "%5.2f %5.2f %n", test1, test2,
test3, test4, test5);
average = (test1 + test2 + test3 +test4
+ test5) / 5.0;
outFile.printf("Average test score: %5.2 %n",
average);
inFile.close();
outFile.close();
}
}
我将test.txt文件放在与java文件相同的文件夹中。但它没有任何数据。
答案 0 :(得分:0)
您没有检查下一个位置是否有元素。
ie:在读取数据之前,您必须确保在下一个位置有一个元素
使用此inFile.hasNext()
。
如果只有下一个元素,则必须选择inFile.next()
或inFile.nextDouble()
。
如果编译器读取文件并执行inFile.next()
,它实际上期望该位置有一个元素。当它没有返回任何内容时,它会生成NoSuchElementException
。
简而言之,读取一些不存在的值会产生
NoSuchElementException