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

Java按指定格式打印数组出错,请求排查问题

分析你的Java数组打印代码问题

让我帮你拆解下这段代码的逻辑,以及可能导致输出不符合预期的原因:

首先先看你当前代码的执行逻辑:

for (int i = 0; i < strArr.length; i++) { 
    // 打印i个制表符做缩进
    for (int j = 0; j < i; j++) { 
        System.out.print("\t"); 
    } 
    // 重复打印strArr[i],共(strArr.length - i)次,每次带制表符
    for (int k = 0; k < (strArr.length - i); k++) { 
        System.out.print(strArr[i] + "\t"); 
    } 
    System.out.println(); 
}

最可能的两个问题:

  1. 每行末尾多了多余的制表符
    你的代码每次打印元素都会追加\t,包括最后一个元素,这会导致每行结尾多一个空白制表符,看起来格式错乱,尤其是在需要精准对齐的时候。

  2. 逻辑不符合预期:重复打印同一个元素
    如果你的目标是打印类似倒三角排列的数组元素(比如第一行输出全部元素,第二行从第2个元素开始,以此类推),那当前代码里的strArr[i]就错了——它会让每行重复打印第i个元素,而不是按顺序输出后续的数组元素。


对应修复方案:

修复行尾多余制表符

调整第二个内层循环,让最后一个元素只打印内容,不追加制表符:

for (int i = 0; i < strArr.length; i++) {
    for (int j = 0; j < i; j++) {
        System.out.print("\t");
    }
    for (int k = 0; k < (strArr.length - i); k++) {
        // 判断是否是最后一个元素
        if (k == (strArr.length - i - 1)) {
            System.out.print(strArr[i]);
        } else {
            System.out.print(strArr[i] + "\t");
        }
    }
    System.out.println();
}

如果要打印倒三角排列的数组元素(而非重复元素)

修改第二个循环中获取元素的索引,从strArr[i]改为strArr[i + k],同时修复行尾制表符问题:

for (int i = 0; i < strArr.length; i++) {
    for (int j = 0; j < i; j++) {
        System.out.print("\t");
    }
    for (int k = 0; k < (strArr.length - i); k++) {
        if (k == (strArr.length - i - 1)) {
            System.out.print(strArr[i + k]);
        } else {
            System.out.print(strArr[i + k] + "\t");
        }
    }
    System.out.println();
}

举个例子,当strArr = {"A", "B", "C", "D"}时,修复后的输出会是:

A	B	C	D
    B	C	D
        C	D
            D

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:11:35