Java两个细节问题求解答外加一个小问题
细节问题1:我在多个方法中使用了Scanner scanner=new Scanner(System.in)语句,并且在方法结束前都进行了流资源关闭操作scanner.close(),但是,一旦第一个方法关闭了它的流资源,后面的方法里就没法进行键盘录入并且报异常了,这么说一个虚拟机里面使用的都是同一个System.in了?第一个方法关闭了第二个方法的录入资源?是这样么?细节问题2:我的某个主函数最开始就进行录入操作
程序代码:
Scanner scanner=new Scanner(System.in); System.out.println("请输入选项"); int choice=scanner.nextInt(); System.out.println("请输入语句"); String string=scanner.nextLine();[或者写成这样String string=scanner.next();] ...=scanner.next...
至此,会产生一个问题,在我string录入结束后scanner里面一直还有残留信息,导致再后面的录入直接被跳过,没法输入,可是我找了很久就是没发现这个残留信息是哪来的
后来我把这个输入操作放到一个非主函数里面,就录入正常了,请问这种问题是怎么产生的?
小问题1:一个函数里面的while循环里面建立的任何对象都是while的while局部变量还是所述这个函数的?