Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA.UTIL.NoSuchElementException错误(基于情况)_Java_Java.util.scanner_Nosuchelementexception - Fatal编程技术网

JAVA.UTIL.NoSuchElementException错误(基于情况)

JAVA.UTIL.NoSuchElementException错误(基于情况),java,java.util.scanner,nosuchelementexception,Java,Java.util.scanner,Nosuchelementexception,我在该程序中遇到问题: 你们学校的历史老师需要帮助给真假考试打分。这个 学生ID和考试答案存储在一个文件中。文件中的第一个条目 包含以下表格中的测试答案: TFFTFFTTTTFFTFTFTFTTT 文件中的每个其他条目都是学生的ID,后跟一个空白, 然后是学生的回答。例如,条目: ABC54301 TFTFTFTFTFTFTTFT 表示学生ID为ABC54301,问题1的答案为真, 问题2的答案是错误的,以此类推。这个学生没有回答 问题9。这次考试有20道题,全班有150多名学生。 每个正确答

我在该程序中遇到问题:

你们学校的历史老师需要帮助给真假考试打分。这个 学生ID和考试答案存储在一个文件中。文件中的第一个条目 包含以下表格中的测试答案: TFFTFFTTTTFFTFTFTFTTT 文件中的每个其他条目都是学生的ID,后跟一个空白, 然后是学生的回答。例如,条目: ABC54301 TFTFTFTFTFTFTTFT 表示学生ID为ABC54301,问题1的答案为真, 问题2的答案是错误的,以此类推。这个学生没有回答 问题9。这次考试有20道题,全班有150多名学生。 每个正确答案得2分,每个错误答案得-1分, 没有答案得0分。编写一个程序来处理测试数据。这个 输出应该是学生的ID,然后是答案,然后是测试 分数,然后是考试分数。假设以下等级比例:90%-100%,A;80%-89.99%,B;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();
    }
}

任何形式的帮助都将不胜感激……谢谢

您在第19行遇到了例外情况

方法返回下一个标记。当没有更多的令牌可用时,它返回“NoTouchElementException”

你检查过文件的内容了吗?确保该文件不是空的。 此外,您应该确保下一个令牌存在,而不是盲目地使用for循环

只是提醒一下-

String s="TTFFT"
只有一个令牌,而

String s="TTF FT"

有两个令牌

您是否阅读了javadoc中的异常?
String s="TTFFT"
String s="TTF FT"