当前位置: 代码迷 >> Java相关 >> Java两个细节问题求解答外加一个小问题
  详细解决方案

Java两个细节问题求解答外加一个小问题

热度:544   发布时间:2013-11-14 15:45:53.0
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局部变量还是所述这个函数的?
搜索更多相关的解决方案: choice  虚拟机  Java  键盘  资源  

----------------解决方案--------------------------------------------------------
System.in 里面的in是静态的属于System类 不管什么时候调用in它都是那一个 所以可以说都是它 除非之后你再重新赋值
第二点 可能是读取时留下了 回车换行符 /r/n ...
while 中的变量所属主要还是根据变量声明的位置 声明时在哪个作用域就属于哪个作用域 作用域就是大括号{}之间

----------------解决方案--------------------------------------------------------
  相关解决方案