A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:打印出如下图案(菱形)   
     *   
   ***   
*****   
*******   
*****   
   ***   
    *   


  1. public static void main(String[] args) {
  2.     int H = 7, W = 7;//高和宽必须是相等的奇数
  3.     for(int i=0; i<(H+1) / 2; i++) {
  4.      for(int j=0; j<W/2-i; j++) {
  5.       System.out.print(" ");
  6.      }
  7.      for(int k=1; k<(i+1)*2; k++) {
  8.       System.out.print('*');
  9.      }
  10.      System.out.println();
  11.     }
  12.     for(int i=1; i<=H/2; i++) {
  13.      for(int j=1; j<=i; j++) {
  14.       System.out.print(" ");
  15.      }
  16.      for(int k=1; k<=W-2*i; k++) {
  17.       System.out.print('*');
  18.      }
  19.      System.out.println();
  20.     }
  21. }
复制代码
内循环表示看不懂

5 个回复

倒序浏览
外层循环是控制行数的,内层第一个for循环打印‘*’前的空格,接下来的for循环打印改行的‘*’,接下来一个换行表示改行打印结束
回复 使用道具 举报
package study;
//这是我写的
public class LingXing {
        public static void main(String[] args) {
                printLingXing(11);
        }

        static void printLingXing(int n) {
                // 打印上半部分
                for (int h = 1; h <= (n + 1) / 2; h++) {
                        for (int l = 1; l <= (n + 1) / 2 - h; l++)
                                // 每行‘*’前的空格
                                System.out.print(' ');
                        for (int num = 1; num <= 2 * h - 1; num++)
                                System.out.print('*');
                        System.out.println();
                }
                // 打印下半部分
                for (int h = 1; h <= n / 2; h++) {
                        for (int l = 1; l <= h; l++)
                                System.out.print(' ');
                        for (int num = 1; num <= 2 * ((n + 1) / 2 - h) - 1; num++)
                                System.out.print('*');
                        System.out.println();

                }
        }
}
回复 使用道具 举报
public static void main(String[] args) {
            
                for (int i = 1; i <= 4; i++) {// i控制行数
                        for (int j = 1; j <= 4 - i; j++) {//j控制每一行前边的空格
                                System.out.print(" ");
                        }
                        for (int k = 1; k <= 2 * i - 1; k++) {//k控制“*”的个数
                                System.out.print("*");
                        }
                        System.out.print("\n");
                }
                for (int i = 3; i >= 1; i--) {
                        for (int j = 4 - i; j >= 1; j--) {
                                System.out.print(" ");
                        }
                        for (int k = 2 * i - 1; k >= 1; k--) {
                                System.out.print("*");
                        }
                        System.out.print("\n");
                }

        }
回复 使用道具 举报
ash午夜阳光 发表于 2015-10-13 12:29
外层循环是控制行数的,内层第一个for循环打印‘*’前的空格,接下来的for循环打印改行的‘*’,接下来一个 ...

就是控制空格的数量吗
回复 使用道具 举报
凌晨两点半 发表于 2015-10-14 14:00
就是控制空格的数量吗

是的,空格数和外层for循环中的控制行数的变量h有关
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马