java利用for循環打印三角形

自己的基礎一直很薄弱。今天看了韓順平老師的講座視頻補充了很多。

把用for循環打印左半邊三角形、右半邊三角形、實心、空心三角形做了一個整理。

和視頻中的代碼略微有些區別,我是以i=0開始定義數組。所以邏輯表達式也有不同的地方。

不過令i=1更容易理解,邏輯也比較容易推理。但其實數組的下標都是從零開始的。

public class demo {
	public static void main(String[]args)
	{
		int lay=4;
	    halfRight(lay);
	    System.out.println();
	    halfLeft(lay);
	    System.out.println();
	    doublePrint(lay);
	    System.out.println();
	    emptyPrint(lay);
		
	}

  public static void halfRight(int lay) {
	  for(int i=0;i<lay;i++) {
		for(int j=0;j<=i;j++){
			System.out.print("*");
		}
		System.out.println();
	}
   }
  public static void halfLeft(int lay) {
	  for(int i=0;i<lay;i++) {
		  for(int k=0;k<lay-1-i;k++) {
			  System.out.print(" ");
		  }
		  for(int j=0;j<=i;j++){
				System.out.print("*");
			}
			System.out.println();	  
	  }  
   }
  public static void doublePrint(int lay) {
	  for(int i=0;i<lay;i++) {
		  for(int k=0;k<lay-1-i;k++) {
			  System.out.print(" ");
		  }
		  for(int j=0;j<2*i+1;j++) {
			  System.out.print("*");
		  }
		  System.out.println();
		  }
	  }

 public static void emptyPrint(int lay) {
	 for(int i=1;i<=lay;i++) {
		  for(int k=1;k<=lay-i;k++) {
			  System.out.print(" ");
		  }
		  //考慮星號時,先忽略空格打法,目標如下:
		 // *
		 // *  *
		 // *    *
		 // *******
		  for(int j=1;j<=(2*i-1);j++) {
			 if(i==1 || i==lay) System.out.print("*");
			 //第一行和最後一行打滿
			 else {
				 if(j==1||j==2*i-1) {
					 System.out.print("*");
					 //第一列或者最後一列再打星號
				 }
				 else {
					 System.out.print(" ");
					 //其他列都打空格
				 }
			 }
		  }
		  System.out.println();
		  }

   

	

 }
}
運行結果:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章