Java:线程“main”java.util.NoSuchElementException中的异常

时间:2014-03-18 04:15:39

标签: java exception

我收到错误列表:

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文件相同的文件夹中。但它没有任何数据。

1 个答案:

答案 0 :(得分:0)

您没有检查下一个位置是否有元素。

ie:在读取数据之前,您必须确保在下一个位置有一个元素 使用此inFile.hasNext()

如果只有下一个元素,则必须选择inFile.next()inFile.nextDouble()

如果编译器读取文件并执行inFile.next(),它实际上期望该位置有一个元素。当它没有返回任何内容时,它会生成NoSuchElementException

  

简而言之,读取一些不存在的值会产生   NoSuchElementException