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(); }
最可能的两个问题:
每行末尾多了多余的制表符
你的代码每次打印元素都会追加\t,包括最后一个元素,这会导致每行结尾多一个空白制表符,看起来格式错乱,尤其是在需要精准对齐的时候。逻辑不符合预期:重复打印同一个元素
如果你的目标是打印类似倒三角排列的数组元素(比如第一行输出全部元素,第二行从第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
相关产品推荐
相关产品推荐

