java - JAVA.UTIL.NoSuchElementException 错误(基于情况)
问题描述
我在使用这个程序时遇到了问题:
您学校的历史老师需要帮助对真/假测试进行评分。学生的 ID 和测试答案存储在一个文件中。文件中的第一个条目包含以下形式的测试答案: TFFTFFTTTTFFTFTTFTFTT 文件中的每个其他条目都是学生的 ID,后跟一个空白,然后是学生的回答。例如条目:ABC54301 TFTFTTFTT TFTFTFFTTFT 表示学生的 ID 为 ABC54301,第 1 题的答案为 True,第 2 题的答案为 False,以此类推。这位学生没有回答第 9 题。考试有 20 道题,班级有 150 多个学生。每答对一题得两分,每答错一题得-1分,不答题得0分。编写一个处理测试数据的程序。输出应该是学生的 ID,然后是答案,其次是考试成绩,其次是考试成绩。假设以下等级等级:90% - 100%,A;80% - 89.99%,乙;70% - 79.99%,C;60% - 69.99%,D;和 0% - 59.99%,F。
import java.io.*;
import java.util.*;
class Assignment6
{
public static void main(String[] args)
throws FileNotFoundException
{
Scanner inFile = new Scanner(new FileReader("student.txt"));
String id, gracias;
String denada ="";
int score = 0;
double percent;
char grade;
char[] orig = new char[20];
char[] sc = new char[20];
for(int i=0 ; i<20 ; i++)
{
gracias = inFile.next();
orig[i] = gracias.charAt(i);
}
inFile.nextLine();
while(inFile.hasNext())
{
id = inFile.next();
for(int i=0 ; i<20 ; i++)
{
sc[i] = inFile.next().charAt(i);
if(sc[i] == orig[i])
score++;
else if(sc[i] != orig[i] && sc[i] != ' ')
score--;
denada += sc[i];
}
inFile.nextLine();
percent = (score/20)*100;
if(percent >= 90 && percent <= 100)
grade = 'A';
else if(percent >= 80 && percent <= 89.99)
grade = 'B';
else if(percent >= 70 && percent <= 79.99)
grade = 'C';
else if(percent >= 60 && percent <= 69.99)
grade = 'D';
else
grade = 'F';
System.out.printf("%-8s%-8s%-2d%-2c%n",id,denada,score,grade);
}
inFile.close();
}
}
我已经尝试过了,但它显示我出现以下错误
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Assignment6.main(Assignment6Java.java:19)
任何形式的帮助将不胜感激......谢谢
解决方案
您在第 19 行遇到异常。
gracias = inFile.next();
java.util.Scanner.next() 方法返回下一个标记。当没有更多令牌可用时,它返回“NoSuchElementException”
你检查过文件的内容吗?确保文件不为空。此外,您应该确保下一个标记存在,而不是盲目地使用 for 循环。
只是提个醒——
String s="TTFFT"
只有一个令牌,而
String s="TTF FT"
有两个令牌
推荐阅读
- mysql - SQLException:在 docker 中连接到 mysql 时访问被拒绝
- angular - Angular中的“ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改”错误
- python - 在 xonsh 中,我如何从管道接收到 python 表达式?
- javascript - 如何从 Bootstrap-Vue 重用项目提供程序功能更新 b 表中的项目异步?
- android - Android:按下按钮后如何让软键盘可见
- python - 如何检查闰年日期是否有效
- c - 如何在 Linux 上的 C 中复制时间属性?
- ios - XCTest 断言失败应用程序未运行
- python - 我是否需要在 Python 中为资源包装器实现 Dispose 模式
- r - R在时间序列对象上分段,试图使其工作