1. 程式人生 > >控制檯列印空心菱形

控制檯列印空心菱形

思路:把列印菱形分為上下兩部分,查詢列印空格和星號所在行的關係,然後只打印邊沿的星號即可,即空心。

package binary;

import java.util.Scanner;
public class HollowDiamond {
  public static void main(String[] args) {
 Scanner input=new Scanner(System.in);
 System.out.println("請輸入菱形的高度,必須是奇數:");
 int height=input.nextInt();//菱形的總高度
 /**
  * 列印菱形的上半部分
  * 
  */
 int top=(height+1)/2;//菱形的上半部分總高度
    for(int j=1;j<=top;j++) {//行數
   //列印上半部分的空格,形如倒三角形
      for(int i=top-j;i>0;i--) {//列印的空格個數等於高度減去所在的行數
     System.out.print(" ");
      }
    //列印上半部分的* ,形如等腰三角形
      for(int i=1;i<=2*j-1;i++) {
        if(i==1||i==2*j-1) {//只在邊沿列印*,其他地方列印空格,即空心
     System.out.print("*");//列印*的個數等於所在的行數*2-1
        }else {
       System.out.print(" ");
        }
      }
      System.out.println();
    }
 /**
  * 列印菱形的下半部分
  * 
  */
 int bottom=(height-1)/2;//菱形的下半部分總高度
 for(int i=1;i<=bottom;i++) {
 //列印下半部分的空格等於所在的行數
    for(int j=1;j<=i;j++) {//
   System.out.print(" ");
    }
    
//列印下半部分的*的規律: 2*(bottom+1-n)-1,其中n為所在的行數
    for(int m=1;m<=2*(bottom+1-i)-1;m++) {
     if(m==1||m==2*(bottom+1-i)-1) {//只在邊沿列印*,其他地方列印空格,即空心
   System.out.print("*");
     }else {
     System.out.print(" ");
     }
    }
    System.out.println();
 }

}
}