您好我是编程新手,今天实际上是我进入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");
}
}
}
答案 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()
添加到代码的末尾。