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有缓存,它会认为你一直在输入刚才输入的非数字。
------解决方案--------------------
还有,问题解决了,就尽快结贴吧。。。