错误:NoSuchElementException

时间:2016-10-24 02:02:45

标签: java.util.scanner delimiter nosuchelementexception

此程序访问文本文件,文本元素以逗号分隔。元素在我创建的变量中注册。除了最后一个。然后发生错误。该程序可以正常使用扫描器类的默认空白分隔符(文本文件可以正常调整),但是当我使用逗号作为分隔符时失败。有人可以提供一些见解。

文字数据:

smith,john,10
stiles,pat,12
mason,emrick,12

代码:

public void openFile(String f)
    {   
        try{
            x = new Scanner(new File(f));
            x.useDelimiter(",");
        } catch(Exception e){
            System.out.println("File could not be found please check filepath");
        }

    }

public boolean checkNameRoster()
    {
        openFile(file);
        boolean b = false;
        while(x.hasNext())
        {
            String lName = x.next().trim();
            **String fName = x.next().trim();**
            String grade = x.next().trim();
            if(fName.equalsIgnoreCase(firstName) && lName.equalsIgnoreCase(lastName) && grade.equalsIgnoreCase(grade))
                {
                    b = true;
                }
        }
        closeFile();
        return b;
    }

1 个答案:

答案 0 :(得分:0)

问题依赖于您在功能x.useDelimiter(",");的{​​{1}}上致电Scanner这一事实。

由于您的文字数据是:

openFile()

smith,john,10 stiles,pat,12 mason,emrick,12 将其视为:

Scanner

那么执行代码时会发生什么:

"smith,john,10\nstiles,pat,12\nmason,emrick,12"

要解决此问题,您可以修改文件并使用1: x.hasNext() ? Yes x.next().trim() => "smith" x.next().trim() => "john" x.next().trim() => "10\nstiles" 2: x.hasNext() ? Yes x.next().trim() => "pat" x.next().trim() => "12\nmason" x.next().trim() => "emrick" 3: x.hasNext() ? Yes x.next().trim() => "12" x.next().trim() => Error! 更改所有\n,或使用第一个,获取所有行,另一个获取令牌,如下所示:

Scanner