文本文件中间没有此类元素异常

No Such Element Exception in the middle of a text file

提问人:lakey dons 提问时间:4/9/2023 最后编辑:lakey dons 更新时间:4/9/2023 访问量:33

问:

我目前正在尝试编写 Java 代码,该代码将读取包含各种琐事问题的 .txt 文件,并将提示、正确答案和其他答案选项存储在 Question 对象中。现在写我不担心将这些值放在对象中,只需正确扫描问题即可。此代码应该扫描.txt文件。如果该行以“#”开头,则表示其问题提示,然后继续扫描几行并存储答案选项。如果答案选项只有两个选项,它会跳过该问题(只需要 4 个选项多项选择题)。最后,文件中的每个问题都应以原始格式打印在.txt文件中。

import org.w3c.dom.Text;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

public class TextReader {
    ArrayList<Question> questions = new ArrayList<>();
    public static void main(String[] args) throws FileNotFoundException{
        File file = new File("animals.txt");
        TextReader.parseFile(file);

    }

    public static void parseFile(File file) throws FileNotFoundException{
        ArrayList<Question> questions = new ArrayList<>();
        String category = file.getName();
        Scanner s = new Scanner(file);
        while (s.hasNextLine()){
            String string = s.nextLine();
            if(string.length() > 0 && string.charAt(0) == '#'){ //checks for start of a question
                System.out.println(string);
                String correct = s.nextLine(); //scans correct answer
                System.out.println(correct);
                String a = s.nextLine(); //scans answers choices
                System.out.println(a);
                String b = s.nextLine();
                System.out.println(b);
                String c = s.nextLine();
                System.out.println(c);
                if(c.isEmpty()){ //checks if only has two answers (i.e true or false, yes or no), then goes to next questions
                    s.nextLine();
                }else{
                    String d = s.nextLine();//scans last answer choice
                    System.out.println(d);

                }

            }
        }


    }



}

现在正在使用这个.txt文件。它读取了所有内容,直到第 690 行,代码在读取问题的选项 C 的过程中抛出 NoSuchElementException 错误。

#Q The Chihuahua Gidget is famous for what reason?
^ It was a mascot for Taco Bell.
A Paris Hilton has it as a pet.
B It was a fill-in mascot for the Georgia Bulldogs.
C It was a mascot for Ta
Exception in thread "main" java.util.NoSuchElementException: No line found

无论我是否删除这个问题,或者如果我删除它之前的每个问题并将其放在开头,我都会不断收到此 NoSuchElement 异常,即使它位于 .txt 文件的中间。文件中这一点之后的所有内容都会引发该错误,我不确定为什么,其他.txt文件也会发生这种情况。

Java 文件 java.util.scanner nosuchelementexception

评论

0赞 Erwin 4/9/2023
我已经尝试了您的代码,它对我来说效果很好,当我移动 #Q 时也是如此 吉娃娃吉吉特出名的原因是什么? 问题到文件末尾。

答: 暂无答案