Java基礎---雙層for循環之小星星實操


在Java基礎中,我們會學到循環結構,其中for的雙層循環更為常見。比如熟知的9*9乘法表就是用 雙層for循環。

雙層for循環的特點:1、內層循環一遍,相當於外層循環只執行一次。2、循環總次數=內循環總數*外循環總數。

既然學到for循環,我們可以用for循環玩玩小星星。打印三角形時要分析空格和星星的數量規律,打印菱形時,要分析空格,星星以及菱形內的空格的規律。

需求1:打印一排七個小星星。

查看代碼

//******
System.out.println("----打印一行星號----");
System.out.println("******");
		
//******
System.out.println("----打印一行星號----");
for (int i = 1; i <= 6; i++) {
	System.out.print("*");
}
System.out.println("\n");

需求2:打印4*6的矩形小星星

查看代碼

  System.out.println("----打印4*6的星號----");
		for (int i = 1; i <= 4; i++) {//行數
			for (int j = 1; j <=6; j++) {//星星個數
				System.out.print("*");
			}
			System.out.println();
		}

需求3:打印直角三角形小星星

查看代碼

  /*			i(行號)		j(*的個數)
		*			1			1
		**			2			2
		***			3			3
		****		4			4
		*****		5			5
		*分析:星星數=行數
		*/
		System.out.println("----打印直角三角型----");
		//方法一
		for (int i = 1; i <6; i++) {//行數
			for (int j = 1; j <= i; j++) {//星星個數,用++的方式。
				System.out.print("*");
			}		
			System.out.println();
		}
		//方法二
		for (int i = 1; i <= 5; i++) {//行數
			for (int j = 5; j > 5-i; j--) {///星星個數,用--的方式。
				System.out.print("*");
			}
			System.out.println();
		}

需求4:打印倒直角三角形小星星

/*			i(行號)		j(*的個數)   規律:i + j = 5 換句話說:j = 5 - i;
		****		1			4
		***			2			3
		**			3			2
		*			4			1
		*分析:星星數=5-行數
		*/	
		System.out.println("----打印倒三角形----");
		for (int i = 1; i < 5; i++) {//行數
			for (int j = 1; j <= 5-i; j++) {//星星的個數
				System.out.print("*");
			}
			System.out.println();
		}

需求5:打印側立等腰三角形小星星

查看代碼

  /*
		*
		**
		***
		****
		*****
		****
		***
		**
		*
		*行數:         1,2,3,4,5,6,7,8,9
		*星星個數:  1,2,3,4,5,4,3,2,1
		*分析:上半部分:星星數=行數;下半部分:星星數+行數=5
		*/
		System.out.println("----打印半邊三角----");
		//方法一:
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = 1; i <= 4; i++) {
			for (int j = 5-i; j >= 1; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
	//方法二
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j<=5-i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}

需求6:打印實心菱形小星星

查看代碼

 /*               i(當前行數)      j(*的個數)  k(空格數量)
		*                1      		1個*          8(4)
	   ***               2      		3個*          6(3)
	  *****              3      		5個*          4(2)
	 *******             4      		7個*          2(1)
	*********            5      		9個*          0
	 *******             6(1)4   		7個*          2(1)
	  *****              7(2)3   		5個*          4(2)
	   ***               8(3)2   		3個*          6(3)
	    *                9(4)1   		1個*          8(4)
	    * 分析:
	    * 上半部分:星星數=2*當前行數-1=2*i-1,空格數=總行數-當前行數=5-i ;
	    * 下半部分:星星數=2*i-1  ,空格數 =5-i            
	*/		
		System.out.println("----打印菱形1----");
		//方法一:
		for (int i = 1; i <= 5; i++) {//上半部分
			for (int j = 5; j > i; j--) {//空格數= 5-當前行數
				System.out.print(" ");
			}
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			for (int j = 1; j < i; j++) {
				System.out.print("*");
			}
		System.out.println();
		}

		for (int i = 1; i <= 4; i++) {//下半部分
			for (int j = 1; j <= i; j++) {
				System.out.print(" ");
			}
			for (int j = 4; j >= i ; j--) {	
				System.out.print("*");
			}
			for (int j = 4; j > i; j--) {
				System.out.print("*");
			}
		System.out.println();
		}
		System.out.println("--------------------");
		System.out.println("----打印菱形2----");
		//方法二:
		for (int i = 1; i <= 5; i++) {//行數
			for (int k = 1; k <=5-i; k++) {//空格個數
				System.out.print(" ");
			}
			for (int j = 1; j <= 2*i-1; j++) {//星星數
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = 4; i>=1; i--) {//行數
			for (int j = 1; j <=5-i; j++) {//空格數
				System.out.print(" ");
			}
			for (int j = 1; j <= 2*i-1; j++) {//星星數
				System.out.print("*");
			}
			System.out.println();
		}

需求7:打印半空型菱形小星星

查看代碼

  /*                   i      j(*的個數)  k(空格數量)
		*                	1      	1個*          8
	   * *               	2      	2個*          7
	  * * *              	3      	3個*          6
	 * * * *             	4      	4個*          5
	* * * * *            	5      	5個*          4
	 * * * *             	6      	4個*          5
	  * * *              	7     	3個*          6
	   * *               	8      	2個*          7
	    *                	9      	1個*          8
	    *                分析:上半部分:左邊空格 = 5-i,星星=2i-1 內部星星=2k-1(其中k是偶數部分用空格代替。),下半部分 左邊空格=5-i,內部星星=2*i-1
	*/
		System.out.println("----打印空心菱形1----");
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= 5-i ; j++) {
				System.out.print(" ");
			}
			for (int k = 1; k <= 2*i-1; k++) {
				if(k % 2 == 0){
					System.out.print(" ");
				}else{
					System.out.print("*");
				}
				
			}
			System.out.println();
		}
		for (int i = 4; i >=1; i--) {
			for (int j = 1; j <= 5-i; j++) {
				System.out.print(" ");
			}
			for (int j = 1; j <=2*i -1 ; j++) {
				if(j %2 ==0){
					System.out.print(" ");
				}else{
					System.out.print("*");
				}
			}
			System.out.println();
		}

需求8:打印空心菱形小星星

查看代碼

 /*
		 	* 
		   * * 
		  *   * 
		 *     * 
		*       * 
		 *     * 
		  *   * 
		   * * 
		    * 
		*/
		System.out.println("----打印空心菱形1----");//方法1
		for (int i = 1; i <=5; i++) {
			for (int j = 1; j <= 5-i; j++) {
				System.out.print(" ");
			}
			for (int j = 1; j <=2*i-1; j++) {
				if(j == 1 || j == 2*i-1){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		for (int i = 4; i>=1; i--) {
			for (int j = 1; j <= 5-i; j++) {
				System.out.print(" ");
			}
			for (int j = 1; j <= 2*i-1; j++) {
				if(j ==1 || j == 2*i-1){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		
		System.out.println("----打印空心菱形2----");//方法2
		for (int i = -5; i <= 5; i++) {//利用數學方法|X|+|Y|=5
			for (int j = -5; j <=5; j++) {
				if((i>0?i:-i)+(j>0?j:-j)==5){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		

需求9:打印復雜的圖形(倒直角三角形和半空菱形組合)

查看代碼

 /*
        i      j(*和-總數為5)
----*                1      1個*+4個-
---* *               2      2個*+3個-
--* * *              3      3個*+2個-
-* * * *             4      4個*+1個-
* * * * *            5      5個*+0個空
 * * * *             6      4個*+1個*
  * * *              7      3個*
   * *               8      2個*
    *                9      1個*
*/
		System.out.println("----有點復雜的三角形----");
		for (int i = 1; i <= 5; i++) {
		for (int j = 1; j <= 5-i; j++) {//外部空格部分
			System.out.print("-");
		}
		for (int k = 1; k <= 2*i-1; k++) {
			if(k%2 == 0){
				System.out.print(" ");
			}else{
				System.out.print("*");
			}
		}
		System.out.println();
		}

		for (int i = 4; i>=1; i--) {
			for (int j = 1; j <= 5-i; j++) {
				System.out.print(" ");
			}
			for (int m = 1; m <= 2*i-1 ; m++) {
				if(m%2 == 0){
					System.out.print(" ");
				}else{
					System.out.print("*");
				}
			}
		System.out.println();
		}

 

需求10: 9*9乘法表

查看代碼

  for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <=i; j++) {
				System.out.print(j+"*"+i+"="+ i * j+"\t");
			}
			System.out.println();
		}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM