Java用户输入数字计数问题:无法统计第二个输入数字
问题分析与解决方案
嘿,我一眼就揪出问题所在啦!你的代码里用了else if,这可是个逻辑陷阱——else if是互斥判断:只有当第一个if的条件不成立时,程序才会去检查else if的条件。当你输入两个正数(比如2 21435),第一个数满足num > 0,count加1后,程序直接跳过了第二个判断,所以最终只统计了1个正数,和预期的2不符。
快速修复方案
把else if改成独立的if语句,这样两个数的判断都会被执行,不管第一个数是否为正数:
Scanner in = new Scanner(System.in); int count = 0; int num = in.nextInt(); int num2 = in.nextInt(); // 换成两个独立的if,取消互斥逻辑 if (num > 0){ count++; } if (num2 > 0){ count++; } System.out.println(count);
现在输入2 21435,两个if都会触发,count会累加为2,完全符合你的预期。
更灵活的优化(支持任意数量输入)
如果以后需要统计更多输入的正数,用循环会更高效,不用逐个声明变量:
Scanner in = new Scanner(System.in); int count = 0; // 循环读取所有输入的整数(直到输入非整数时结束) while (in.hasNextInt()) { int currentNum = in.nextInt(); if (currentNum > 0) { count++; } } System.out.println(count);
这个版本不管你输入1个、2个还是N个数字,都能准确统计其中正数的数量。
内容的提问来源于stack exchange,提问作者Jonny
相关产品推荐
相关产品推荐

