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();
		}

 

posted @ 2022-02-23 12:48  小孙不是程序员  阅读(1103)  评论(0编辑  收藏  举报
Live2D