【问题标题】:Scanner Reading Data file Java.Util.NoSuchElementException: Null扫描仪读取数据文件 Java.Util.NoSuchElementException: Null
【发布时间】:2016-03-09 16:08:15
【问题描述】:

我正在尝试编写一个从文件中获取数字的类,但我在运行时一直遇到此错误: Java.util.NoSuchElementException:空(在 java.util.Scanner 中) 这是我的代码:

import java.util.*;
import java.io.*;
public class finalMain
{
    public static void main (String args[]) throws IOException
{
  int lineNumber = 0;
   Scanner sc = new Scanner (new File ("Prog349f.txt"));

    System.out.println("Student  Quiz 1  Quiz2    MidTerm   Final      Final %     Grade");

    while(sc.hasNextLine())
    {

        lineNumber++;
        sc.nextLine();
    }
    for(int i = 1; i <= 1; i++)
    {
       int quizOne = sc.nextInt();
       int quizTwo = sc.nextInt();
       int midterm = sc.nextInt();
       int finalTest = sc.nextInt();

       finalGrade studentNext = new finalGrade(sc.nextInt(),sc.nextInt(), sc.nextInt(),sc.nextInt(), i);
       System.out.println(studentNext);
    }
    sc.close();
}
}

我在想也许我需要创建两个扫描仪对象,每行一个或其他东西,但我不知道该怎么做。

【问题讨论】:

  • 包含异常及其消息是要做的事情,但如果您还可以包含堆栈跟踪的前几行会更好:它公开了很多上下文,特别是它被提出的线。

标签: java java.util.scanner nosuchelementexception


【解决方案1】:

您误解了Scanner 方法的用法:sc.nextLine(); 消耗并返回该行。 这意味着您当前正在使用sc.nextLine(); 读取整个文件,丢弃结果,然后您才尝试读取 4 个整数,由于扫描仪位于文件末尾,因此无法读取。

您应该改用以下两种方法之一:

  • 如果您确定文件的每一行包含由空格(或任何其他特定字符)分隔的 4 个整数,仅此而已,那么您可以扫描 4 个整数,而扫描仪有下一行。

  • 如果可能存在变化或无用数据,您应该保持 hasNextLine()nextLine() 调用原样,然后使用正则表达式、拆分+索引或其他扫描器从行中检索 4 个整数.

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2014-02-11
    相关资源
    最近更新 更多