当前位置: 代码迷 >> J2SE >> Scaner类在使用的时候为什么调用close会有有关问题
  详细解决方案

Scaner类在使用的时候为什么调用close会有有关问题

热度:399   发布时间:2016-04-23 19:59:00.0
Scaner类在使用的时候为什么调用close会有问题

package com.hw.test;

import java.util.Scanner;

public class TestDemo01 {

/**
 * @param args
 */
public static void main(String[] args) {
System.out.println("请输入内容");
while(true)
{
Scanner scan = new Scanner(System.in);
if(scan.hasNextInt())
{
int x = scan.nextInt();
System.out.println(x);
}
else
{
System.out.println("请再次输入");
}
// scan.close();
}

}
}



以上的代码当前可以正常执行,当我输入非整数的时候会让我重新输入,但是我现在将注释的close方法取消注释。发现不会再接收用户的输入,请问下论坛的朋友,是什么原因啊?不明白
------解决思路----------------------
System.out.println("请输入内容");
Scanner scan = null;
while (true) {
scan = new Scanner(System.in);
if (scan.hasNextInt()) {
int x = scan.nextInt();
System.out.println(x);
break;
} else {
System.out.println("请再次输入");
}
}
scan.close();


因为生成Scanner的使用你用的都是System.in这个流,关闭后就不能再使用了
而这个时候scan对象的值都是固定的了
Scanner scan1 = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
scan1.close();
int a=scan2.nextInt();
这样的代码scan1关闭  再去使用scan2会报错
  相关解决方案