Java do-while循环输出1-20奇偶性时重复输出2 is even排错
代码错误原因
你的代码共有3处问题,其中前两处是导致无限输出2 is even的核心原因:
- 计数器自增位置错误:你在进入do-while循环前就执行了
counter = counter + 1;,初始值为1的计数器在进入循环前就被修改为2,永远不会输出数字1的判定结果。 - 循环体内缺少计数器自增逻辑:do-while循环的执行规则是先跑循环体内容、再校验循环终止条件,你的循环体中只有奇偶判断和打印逻辑,从未修改
counter变量的值,counter会一直停留在2,counter <= 20的判断条件永远为真,自然会陷入死循环。 - 奇偶判断逻辑冗余:整数对2取模的结果只有0和非0两种情况,不需要额外写
else if (counter % 2 != 0)分支,直接用else即可,这个问题不会触发运行错误,但属于不必要的冗余代码。
修正后可正常运行的代码
public class Objective7Lab3 { public static void main(String[] args) { int counter = 1; do { if (counter % 2 == 0) { System.out.println(counter + " is even"); } else { System.out.println(counter + " is odd"); } // 每次打印完成后再给计数器自增 counter = counter + 1; } while (counter <= 20); } }
内容的提问来源于stack exchange,提问作者chopkins14
相关产品推荐
相关产品推荐

