帮我看一下哪里出错了

如果去掉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);
}


予别她
浏览 1159回答 2
2回答

轻浮与傲慢

第9行hasNextInt()方法忘写括号了第9行就进行过一次输入判断但是你只是把输入结果进行是否是整数的判断,第13行也是只是对输入的数进行判断是否小于0并没有把值存在变量里,所以你第17行又输入了一次进行判断,整个流程等同于第一次输入一个数进行判断(if)输入是否是整数(else if)输入是否大于0(else)前两个条件均满足再输入一个数将keepruning赋值为false然后挑出循环输出n你直接输入一个数使用nextInt()方法用try-catch包装一下,如果输入不是整形它会抛出一个异常你可以在catch里输出一句话这样就行了,你这样写太乱毫无逻辑可言
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java