nishijaideba 2024-09-23 10:24 采纳率: 50%
浏览 4
已结题

Java 代码理解练习

public class Main {
    public static void main(String[] args) {
        int m = 7, n = 1;
        do {
            if (m-- < ++n) {

                break;
            }
        } while (m > 4);
        System.out.println("m = " + m + " n = " + n);

    }
}

为什么都是4和4,ai说是4和5,但是编译器编译出来时4和4,这是ai说的 :
初始化 m = 7 和 n = 1。
进入 do-while 循环:
第一次循环:if (m-- < ++n),m-- 为 7(后减),++n 为 2。条件不满足,继续循环。
第二次循环:m 变为 6,n 变为 3。条件不满足,继续循环。
第三次循环:m 变为 5,n 变为 4。条件不满足,继续循环。
第四次循环:m 变为 4,n 变为 5。条件满足,跳出循环。
最终,m = 4,n = 5,输出结果为 m = 4 n = 5。

  • 写回答

3条回答 默认 最新

  • 为自己带盐的咸鱼 2024-09-23 11:22
    关注

    我认为流程是这样的:
    初始化 m = 7 和 n = 1。
    进入 do-while 循环:
    第一次循环:if (m-- < ++n),m-- 为 7(后减),++n 为 2。条件不满足,继续循环。在执行完判if断后m就已经是6了
    第二次循环:m 为 6,n 变为 3。条件不满足,继续循环。在开始第三次循环前,执行完if判断后m就已经是5了
    第三次循环:m 为 5,n 变为 4。条件不满足,继续循环。执行完if判断后m就已经是4了,之后while的条件对m的值进行判断,判断未通过,循环终止输出结果为m(4),n(4),应该是进行不到第4个循环的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 9月23日