Java打印图案时如何去除两个图案间的多余两行空行?
问题分析与解决
你的代码存在两个问题:一是打印的星号数量和目标不符,二是两个图案之间多出两行空行,原因如下:
- 星号数量错误:原代码中
col <= row-1的条件会让每行少打印一个星号(比如row=4时只输出3个星号),和你想要的每行row个星号的目标不符。 - 多余空行问题:当
row=1时,col <= row-1等价于col <=0,内层循环不会执行,此时System.out.println()会打印空行。第一个循环的最后一次迭代(row=1)和第二个循环的第一次迭代(row=1)各输出一个空行,这就是中间多出两行空行的原因。
修正后的代码
static void k(){ Scanner sc= new Scanner(System.in); System.out.println("no.of rows"); int a = sc.nextInt(); // 打印上半部分:从a个星递减到1个星 for(int row=a; row>=1; row--){ for (int col=1; col <= row; col++){ // 修正条件为col <= row System.out.print(" * "); } System.out.println(); } // 打印中间的一个空行(如果需要多个空行可以多加几个System.out.println()) System.out.println(); // 打印下半部分:从1个星递增到a个星 for(int row=1; row<=a; row++){ for (int col=1; col <= row; col++){ // 修正条件为col <= row System.out.print(" * "); } System.out.println(); } }
说明
- 把内层循环的条件从
col <= row-1改为col <= row,确保每行打印row个星号,匹配目标图案。 - 去掉原循环中产生空行的无效迭代,改为在两个图案之间手动打印一个空行,精准控制空行数量。
内容的提问来源于stack exchange,提问作者SAURABH7DEOKATE
相关产品推荐
相关产品推荐

