Java程序中odd与even变量无法自增问题:输出始终显示二者为0
问题排查:奇偶计数变量始终为0的原因
嘿,我一眼就看到问题出在哪了——你的continue语句直接跳过了奇偶判断的代码块!
看这段关键代码:
if (number != -1) { sum += number; total++; average = (double)sum / (double)total; continue; // 这里是罪魁祸首! } if (number % 2 == 0) { even++; } else { odd++; }
当你输入一个非-1的数字时,程序执行完sum、total和average的更新后,continue会直接让循环回到开头,后面判断奇偶的代码完全没有机会运行,所以even和odd一直停留在初始值0。
修复方案
其实很简单,把多余的continue删掉就行,顺便还能简化一下代码逻辑(因为前面已经判断过number是-1的情况并break了,所以不需要再判断number != -1):
修改后的核心循环代码:
while (true) { int number = Integer.valueOf(scanner.nextLine()); if (number == -1) { System.out.println("Thx! Bye!"); break; } // 直接处理有效数字,不需要额外判断 sum += number; total++; average = (double)sum / (double)total; // 现在这段奇偶判断代码能正常执行了 if (number % 2 == 0) { even++; } else { odd++; } }
这样每次输入有效数字时,程序会先更新总和、计数和平均值,接着判断数字的奇偶性并更新对应的计数器,运行后就能得到正确的even和odd数值啦。
内容的提问来源于stack exchange,提问作者JasonSizemore24
相关产品推荐
相关产品推荐

