如果去掉13,14,15行(就是判断输入的数字是否大于0的那几行代码),我输入1进去就会打印出1但是不去掉13,14,15行的话,需要输入两次1,才会打印出结果,不知道是为什么public static void main(String[] args) {
int n = 0;
boolean keeprunning = true;
System.out.println("请输入一个整数:");
while(keeprunning) {
Scanner input = new Scanner(System.in);
//判断输入的是不是一个整数
if(!input.hasNextInt || input == null) {
System.out.println("您输入的不是一个整数,请重新输入:");
}
//判断输入的数字是否大于0
else if(input.nextInt() < 0) {
System.out.println("请重新输入一个大于0的整数:");
}
else {
n = input.nextInt();
keeprunning = false;
}
}
System.out.println(n);
}
2 回答
轻浮与傲慢
TA贡献9条经验 获得超3个赞
第9行hasNextInt()方法忘写括号了
第9行就进行过一次输入判断但是你只是把输入结果进行是否是整数的判断,第13行也是只是对输入的数进行判断是否小于0并没有把值存在变量里,所以你第17行又输入了一次进行判断,整个流程等同于第一次输入一个数进行判断(if)输入是否是整数(else if)输入是否大于0(else)前两个条件均满足再输入一个数将keepruning赋值为false然后挑出循环输出n
你直接输入一个数使用nextInt()方法用try-catch包装一下,如果输入不是整形它会抛出一个异常你可以在catch里输出一句话这样就行了,你这样写太乱毫无逻辑可言
添加回答
举报
0/150
提交
取消