VS Code中Scanner已关闭仍提示资源泄漏问题求助
解决Scanner已关闭仍提示资源泄漏的问题
你的问题根源是代码里的语法错误,导致编译器认为sc.close()不会被执行到,才出现警告,跟try-catch无关,修正以下两处错误即可:
- main方法定义多了分号:
public static void main (String args[]);{这里的分号是多余的,它会让main方法变成空实现,后面的代码块不属于main方法,所以编译器判定sc.close()不在程序执行路径中,触发资源泄漏警告。 - 数组赋值语法错误:
a[]=sc.nextInt();应该改为a[i]=sc.nextInt();,否则会直接编译失败。
修正后的完整代码:
import java.util.*; public class Array{ public static void main (String args[]){ int a[]=new int[5]; Scanner sc=new Scanner(System.in); System.out.println("Enter 5 numbers:"); for(int i=0;i<5;i++){ a[i]=sc.nextInt(); } System.out.println("You entered:"); for(int i=0;i<5;i++){ System.out.println(a[i]); } sc.close(); } }
之前同类代码没出现警告,是因为那些代码没有这类语法错误,sc.close()确实处于正常的执行流程中,编译器能识别到资源被正确关闭。
内容的提问来源于stack exchange,提问作者Gargi Pramanik
相关产品推荐
相关产品推荐

