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);这样的代码scan1关闭 再去使用scan2会报错
Scanner scan2 = new Scanner(System.in);
scan1.close();
int a=scan2.nextInt();