黑马程序员技术交流社区

标题: 求教打印出如下图案(菱形) [打印本页]

作者: 凌晨两点半    时间: 2015-10-13 10:47
标题: 求教打印出如下图案(菱形)
题目:打印出如下图案(菱形)   
     *   
   ***   
*****   
*******   
*****   
   ***   
    *   


  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. }
复制代码
内循环表示看不懂


作者: ash午夜阳光    时间: 2015-10-13 12:29
外层循环是控制行数的,内层第一个for循环打印‘*’前的空格,接下来的for循环打印改行的‘*’,接下来一个换行表示改行打印结束
作者: ash午夜阳光    时间: 2015-10-13 12:59
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();

                }
        }
}

作者: hyzhw    时间: 2015-10-13 15:40
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");
                }

        }
作者: 凌晨两点半    时间: 2015-10-14 14:00
ash午夜阳光 发表于 2015-10-13 12:29
外层循环是控制行数的,内层第一个for循环打印‘*’前的空格,接下来的for循环打印改行的‘*’,接下来一个 ...

就是控制空格的数量吗
作者: ash午夜阳光    时间: 2015-10-14 22:13
凌晨两点半 发表于 2015-10-14 14:00
就是控制空格的数量吗

是的,空格数和外层for循环中的控制行数的变量h有关




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2