C与Java图案编程条件相同却输出不一致,求修复方案
修复C与Java图案程序输出不一致的问题
嘿,我一眼就瞅见你Java代码里的问题啦!咱们来快速把它搞定:
问题根源对比
你的C代码逻辑完全没问题:内层循环里,不符合条件的位置输出空格,每一行图案绘制完成后,用printf("\n")切换到下一行。但Java代码里有两处关键小错误:
- 你在else分支用了
System.out.println(),这会直接输出换行符而不是空格——本该是空格的位置变成了换行,直接把整个图案的结构打乱了 - 外层循环结束后没加换行操作,缺少了C代码里
printf("\n")对应的逻辑,不过第一个错误已经让输出完全乱套了
修复后的Java代码
把else分支改成输出空格,同时在外层循环的每轮结尾添加上换行:
public class Main { public static void main(String [] args) { int i,j; for(i=1;i<=5;i++) { for(j=1;j<=9;j++) { if(j<=(6-i)||j>=(4+i)) System.out.print("*"); else System.out.print(" "); // 替换成输出空格,而非换行 } System.out.println(); // 每行图案结束后换行,对应C的printf("\n") } } }
修复后的输出
现在Java代码的输出就会和C语言完全一致了:
********* **** **** *** *** ** ** * *
内容的提问来源于stack exchange,提问作者Vivek
相关产品推荐
相关产品推荐

