扫描仪有问题。没有脚本错误,但控制台出错

时间:2013-02-16 15:34:36

标签: java.util.scanner

我正在从事个人项目,但我有一个问题,我似乎无法弄明白。

public void setvars() {
    File file = new File("config.txt");

    try {
        Scanner sc = new Scanner(file);

        while(sc.hasNextLine()) {
            //int OESID = sc.nextInt(); this variable isnt used yet.
            String refresh = sc.next();
            sc.close();

            textFieldtest.setText(refresh);
        }
    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

在控制台中告诉我错误是while(sc.hasNextLine()) {我无法弄明白。任何指针/建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

问题是您在使用扫描仪时正在关闭扫描仪。

修改代码,完成后关闭扫描程序:

    while(sc.hasNextLine()) {
        //int OESID = sc.nextInt(); this variable isnt used yet.
        String refresh = sc.next();

        textFieldtest.setText(refresh);
    }
    sc.close();

每当您处理任何资源时,这应该是一般模式 - 确保只有在您确定不再需要它时才关闭它。

如果您通过使用新的try-with-resource功能(将自动关闭资源)来使用Java 7,您可以让生活更轻松:

    try(Scanner sc = new Scanner("/Users/sean/IdeaProjects/TestHarness/src/TestHarness.java")) {
        while(sc.hasNextLine()) {
            // do your processing here
        }
    }  // resource will be closed when this block is finished