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

请求帮助:使用Java for循环实现指定数字的递减格式输出

问题分析与修复代码

你的现有代码逻辑存在以下问题:

  • 内层循环的数字输出范围错误,不应该从输入的num开始,而是要从当前外层循环的起始数字i开始递减
  • 连字符的拼接逻辑混乱,导致输出格式不符合要求
  • 没有处理输入为1时的特殊输出需求(即1-1)

以下是修复后的完整代码,完全符合你要的输出格式:

import java.util.Scanner;

public class DescendingSequence {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num = scanner.nextInt();
        scanner.close();

        // 外层循环控制每组的起始数字,从输入值递减到1
        for (int start = num; start >= 1; start--) {
            // 内层循环控制每组的行数,每行的数字个数逐行增加
            for (int lineLength = 1; lineLength <= start; lineLength++) {
                // 处理输入为1时的特殊输出
                if (start == 1) {
                    System.out.println("1-1");
                    break;
                }

                StringBuilder lineContent = new StringBuilder();
                // 逐个输出当前行的数字,用连字符连接
                for (int currentNum = start; currentNum >= start - lineLength + 1; currentNum--) {
                    if (lineContent.length() > 0) {
                        lineContent.append("-");
                    }
                    lineContent.append(currentNum);
                }
                System.out.println(lineContent);
            }
        }
    }
}

代码说明

  1. 外层循环:start从输入的数字递减到1,负责控制每一组的起始数字(比如输入4时,依次处理4、3、2、1四组)
  2. 内层循环:lineLength控制每组内的行数和每行的数字个数,从1增加到当前的start值(比如start=4时,生成4行,数字个数从1到4)
  3. 字符串拼接:使用StringBuilder避免频繁字符串拼接的性能问题,同时自动处理连字符的位置,确保格式正确
  4. 特殊处理:单独处理start=1的情况,输出要求的1-1

测试输入4时,输出与你给出的示例完全一致:

4
4-3
4-3-2
4-3-2-1
3
3-2
3-2-1
2
2-1
1-1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:28:34