扫描仪未关闭错误

时间:2015-09-11 16:55:09

标签: java

您好我是编程新手,今天实际上是我进入Java世界的第三天。每当我用扫描仪编写java程序时,我都会收到警告“扫描仪永远不会关闭”。请指出我做错了什么。

public class App {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("what is your lucky number?");
        int my = scanner.nextInt();

        switch(my) {
        case 7 :
            System.out.println("your choice is correct");
            break;
        case 10 :
            System.out.println("your choice is correct");
            break;
        default :
            System.out.println("bad choice");
        }
    }
}

2 个答案:

答案 0 :(得分:3)

有一个警告,因为您的工具(编译器或IDE?)足够智能,可以看到有一个对象在您的情况Closeable中实现了Scanner,您还没有调用close()方法。实现Closeable的类这样做是因为通常close()释放了重要的系统资源,否则这些资源将被泄露。例如,使用后需要关闭套接字或文件句柄。有一种模式可以关闭任何需要关闭的实现资源:

在任何版本的java

Scanner scanner = null;
try {
    scanner = new Scanner(System.in);
    // use the scanner
} finally {
    if (scanner != null) {
        scanner.close();
    }
}

即使try块中抛出异常,也可以保证finally块执行。这可确保您不会泄漏资源。

在Java 7 +中

try (Scanner scanner = new Scanner(System.in)) {
    // use the scanner
}

答案 1 :(得分:0)

只需将scanner.close()添加到代码的末尾。