当前位置: 代码迷 >> Eclipse >> input.hasNextInt() 如何在循环里使用这个
  详细解决方案

input.hasNextInt() 如何在循环里使用这个

热度:849   发布时间:2016-04-23 13:36:39.0
input.hasNextInt() 怎么在循环里使用这个
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数");
int age = 0;
while (true) {
if (input.hasNextInt() == true) {
age = input.nextInt();
System.out.println("true");
} else {
System.out.println("false");
}
}

这段代码在输入非数字是就死循环,求解?

------解决方案--------------------

Java code
public class Test {    public static void main(String args[]){        Scanner input = new Scanner(System.in);        System.out.println("请输入一个数");//1.输入非数字abc        int age = 0;        while (true) {        if (input.hasNextInt() == true) {/2./检查是否是数字,结果不是,跳过if语句块        age = input.nextInt();        System.out.println("true");        }else {//3.执行打印操作,关键问题来,系统把false当做System.in读进来了,所以就跟1一样咯        System.out.println("false");        }        }    }}
------解决方案--------------------
Java code
import java.util.Scanner;public class Test {    public static void main(String args[]){        Scanner input = new Scanner(System.in);        System.out.println("请输入一个数");        int age = 0;        while (true) {        if (input.hasNextInt() == true) {System.out.println(input.hasNextInt());        age = input.nextInt();        }else {System.out.println(input.hasNextInt());//是这个变成false,所以死循环,Scaner是获取键盘输入吧。。        }        }    }}
------解决方案--------------------
老问题,要是放在外面的话,因为Scanner有缓存,它会认为你一直在输入刚才输入的非数字。

探讨

昨晚请教了高人,把Scanner input=new Scanner(System.in);放到while循环里就没事了??谢谢

------解决方案--------------------
还有,问题解决了,就尽快结贴吧。。。
  相关解决方案