java.util.NoSuchElementException-扫描仪从文件读取

java.util.NoSuchElementException-扫描仪从文件读取,java,arraylist,java.util.scanner,nosuchelementexception,Java,Arraylist,Java.util.scanner,Nosuchelementexception,我有一个问题,每次我从.txt文件中删除一行,代码就会中断,并显示标题中的消息。 我的扫描仪读取一个每行有三个元素的文件,并将其存储到ArrayList中。 如果我不更改文件,它会工作。如果我再加一行,它就行了。 由于某种原因,只有当我删除一行时它才会崩溃。 这是我代码的一部分: private ArrayList <Object> readObjects (String filename) { ArrayList <Object> storeObjec

我有一个问题,每次我从.txt文件中删除一行,代码就会中断,并显示标题中的消息。 我的扫描仪读取一个每行有三个元素的文件,并将其存储到ArrayList中。 如果我不更改文件,它会工作。如果我再加一行,它就行了。 由于某种原因,只有当我删除一行时它才会崩溃。 这是我代码的一部分:

private ArrayList <Object> readObjects (String filename) 
    {
    ArrayList <Object> storeObjects = new ArrayList();      
        File file = new File(filename);
        try 
        {
            Scanner scanner = new Scanner(file);
            while (scanner.hasNextLine()) 
            {
                Object objectTemp = new Object();
                objectTemp.set(scanner.next(), scanner.next(), scanner.nextInt());
                storeObjects.add(objectTemp);
            }
            scanner.close();
        }      
        catch (FileNotFoundException e) 
        {
            e.printStackTrace();
        }     
        return storeObjects;
}
private ArrayList readObjects(字符串文件名)
{
ArrayList storeObjects=新的ArrayList();
文件=新文件(文件名);
尝试
{
扫描仪=新扫描仪(文件);
while(scanner.hasNextLine())
{
Object objectTemp=新对象();
objectTemp.set(scanner.next()、scanner.next()、scanner.nextInt());
添加(objectTemp);
}
scanner.close();
}      
catch(filenotfounde异常)
{
e、 printStackTrace();
}     
返回存储对象;
}
我更改了对象和arrayList的名称,以便于您阅读。希望能有所帮助。
我做错了什么?

扫描仪中的哪一个进行调试。接下来…
调用它时抛出错误。如果您提供了要读取的文件内容,可能会有所帮助。另外,我不明白你到底什么时候删除该行(比如在读取或手动删除该行时)。如果您试图在读取文件时执行此操作,那么我猜是
scanner.hasNextLine()
抛出了该exeption。您是如何编译它的<代码>objectTemp.set(scanner.next(),scanner.next(),scanner.nextInt())不起作用,因为对象没有
set
方法。当“擦除”一行时,是否有可能在文件中留下换行符?如果是这样,hasNextLine()将作为true传递,因为它将读取新行字符,但scanner.next()调用将失败,因为该行上没有3个项目。如果你能在“删除”一行后发布你的文件,也许还有文件,那会有帮助。@Justine为什么不直接回答这个问题,你知道他就是这么做的