“线程中的异常”;“主要”;java.util.NoSuchElementException读取文件

“线程中的异常”;“主要”;java.util.NoSuchElementException读取文件,java,Java,嘿,我正在学习java,我不知道为什么它总是给我一个错误 “线程”main“java.util.NoSuchElementException”中的异常“如果有人向我解释发生这种情况的原因,我将非常感激。您调用x.next()3次,您应该只调用一次,您正在测试x.hasNext(),但随后尝试从扫描仪中提取三个项目。看起来您的扫描仪的可用项目少于三个。如果(例如)剩下2个项目,x.hasNext()将返回true,但您的第三个x.next()将抛出一个NoTouchElementException

嘿,我正在学习java,我不知道为什么它总是给我一个错误
“线程”main“java.util.NoSuchElementException”中的异常“如果有人向我解释发生这种情况的原因,我将非常感激。

您调用x.next()3次,您应该只调用一次,您正在测试
x.hasNext()
,但随后尝试从扫描仪中提取三个项目。看起来您的扫描仪的可用项目少于三个。如果(例如)剩下2个项目,
x.hasNext()
将返回true,但您的第三个
x.next()
将抛出一个NoTouchElementException。
新扫描仪(“C:\\Users\\adamp\\Desktop\\test\\chinese.txt”)并不像你想象的那样。我的文件中有12项,我正在学习一个教程,所以我不知道是否是这样。也许教程已经过时了。你能推荐一个关于写入文件和读取文件的好教程吗。谢谢您是否访问问题顶部的重复链接(您可能需要重新加载此选项卡才能查看)?它解决了你的问题吗?是的,谢谢,我通过查看其他线程解决了它。如果我想连续打印3个项目,然后下一个项目,它应该是什么样子
import java.util.*;
import java.io.*;

public class ReadingFiles {

    private Scanner x;

    public void openFile(){
        try{
            x = new Scanner("C:\\Users\\adamp\\Desktop\\test\\chinese.txt");
        }//try
        catch(Exception e){
            System.out.println("could not find file");
        }//catch
    }//openFile()

    public void readFile(){
        while(x.hasNext()){
            String a = x.next();
            String b = x.next();
            String c = x.next();

            System.out.printf("%s %s %s\n", a,b,c);
        }//while
    }//readFile()

    public void closeFile(){
        x.close();
    }//closeFile()

    public static void main(String[] args){
        ReadingFiles cz = new ReadingFiles();
        cz.openFile();
        cz.readFile();
        cz.closeFile();
    }//main
}//class