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