You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为do-while循环补充逻辑,实现双向数字打印?

解决do-while循环适配正反向打印的问题

你的代码目前只固定了start++的增长方向,所以当start > end时,打印一次后start会离end更远,循环直接终止,无法完成从大到小的打印。结合老师的提示,我们需要先判断步长方向,再调整循环逻辑,具体修改如下:

修改后的代码

public static void runLoop(int start, int end) {
    // 确定步长:从小到大走+1,从大到小走-1
    int step = start <= end ? 1 : -1;
    do {
        System.out.print(start);
        // 按步长更新start
        start += step;
        // 判断更新后的start是否还在需要打印的范围内
    } while ((start - end) * step <= 0);
}

逻辑说明

  1. 步长判断:通过三元运算符start <= end ? 1 : -1确定每次循环的步长,同时适配正、反两种打印方向。
  2. 循环条件优化:(start - end) * step <= 0是简洁的范围判断方式:
    • 步长为1(从小到大)时,start - end ≤ 0 意味着start还没超过end,需要继续循环;
    • 步长为-1(从大到小)时,start - end ≥ 0,乘以-1后结果≤0,表示start还没低于end,需要继续循环;
    • 当start超出目标范围后,该条件不成立,循环终止。
  3. 适配do-while特性:do-while必然执行一次,所以即使start和end相等,也能正确打印唯一的数字。

测试验证

  • 调用runLoop(2, 5):输出2345
  • 调用runLoop(5, 2):输出5432
  • 调用runLoop(3, 3):输出3

内容的提问来源于stack exchange,提问作者Pontus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:45:32