Java Day09

java 嵌套循环

嵌套循环
看题有几层几部分,逐级操作,分开进行 ,先考虑外层,再考虑内层;
先看率这部分,再考虑下部分;
同内层,先做第一个循环,再做第二个循环,找到(凑出)形成 循环条件判断的公式。

为了更好的理解循环嵌套之后的一个操作,后期代码中,一些算法中,都会使用到嵌套循环。

/*				L   *
    *****       1   5   
    *****       2   5
    *****       3   5
    *****       4   5
    *****       5   5
*/
class Demo1 {
	public static void main(String[] args) {
		System.out.println("********");
		System.out.println("********");
		System.out.println("********");
		System.out.println("********");
		System.out.println("********");
		System.out.println("********");
		System.out.println("********");
		System.out.println("********");
		
		
		System.out.println("----------------------------------------");
		
```java
		// 需要展示5行数据
		for (int i = 1; i <= 8; i++) {
			System.out.println("********");
		}
		
		
		System.out.println("----------------------------------------");
		
		// 外层循环控制总行数
		int line = 20;
		for (int i = 1; i <= line; i++) {
			// 星星个数 = 最大行号
			for (int j = 1; j <= line; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
	}
}

```java

```java

```java
/*				L  *
    *           1  1
    **          2  2
    ***         3  3 
    ****        4  4
    *****       5  5
    ******      6  6
*/
class Demo2 {
	public static void main(String[] args) {
		int line = 30;
		// 外层循环控制总计6行
		for (int i = 1; i <= line; i++) {
			// 每一行星星个数 == 行号
			for (int j = 1; j <= i; j++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}

```java

```java

```java
/*			L  _  *
		*   1  4  1
	   **   2  3  2
	  ***   3  2  3
	 ****   4  1  4
	*****   5  0  5
			_下划线表示空格
			
			_ = 总行数 - 当前行号;
			* = 当前行号
*/

```java

```java

```java
class Demo3 {
	public static void main(String[] args) {
		int line = 30;
		// 外层循环控制总行数
		for (int i = 1; i <= line; i++) {
			// 内层循环1: 控制空格的个数
			for (int j = 1; j <= line - i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2: 控制星星的个数
			for (int k = 1; k <= i; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}



```java
/*              L  _  *  
     *          1  5  1
    ***         2  4  3
   *****        3  3  5
  *******       4  2  7
 *********      5  1  9 
***********     6  0  11
				
				_ = 总行数 - 当前行号;
				* = 2 * 当前行号 - 1;
*/
class Demo4 {
	public static void main(String[] args) {
		int line = 20;
		// 外层循环控制总行数,这里是6行
		for (int i = 1; i <= line; i++) {
			// 内层循环1:控制空格的个数
			for (int j = 1; j <= line - i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2:控制星星的个数 星星 = 2 * 当前行号 - 1;
			for (int k = 1; k <= 2 * i - 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}
/*				L  _  字符 个数
      A         1  6   A   1
     BBB        2  5   B   3
    CCCCC       3  4   C   5
   DDDDDDD      4  3   D   7
  EEEEEEEEE     5  2   E   9 
 FFFFFFFFFFF    6  1   F   11 
GGGGGGGGGGGGG   7  0   G   13
				_个数 = 总行数 - 当前行号;
				字符个数 = 2 * 当前行号 - 1;
				字符本身的递增过程
*/
class Demo5 {
	public static void main(String[] args) {
		// 定义一个字符变量,变量初始化为字符'A'
		char ch = 'A';
		
		// 外层循环控制总行数,总行数7行
		for (int i = 1; i <= 26; i++) {
			// 内存循环1: 控制空格的个数
			for (int j = 1; j <= 26 - i; j++) {
				System.out.print(' ');
			}
			
			// 内存循环2: 控制字符个数
			for (int k = 1; k <= 2 * i - 1; k++) {
				System.out.print(ch);
			}
			
			System.out.println();
			
			// 字符变量需要在每一次展会完毕之后,进行自增
			ch += 1;
		}
	}
}
/*				L  _  *
     *			    1  5  1	
    ***			2  4  3
   *****		   3  3  5
  *******		4  2  7
 *********		5  1  9
***********		6  0  11

 *********      1  1  9
  *******       2  2  7 
   *****       	3  3  5
    ***			4  4  3
     * 			5  5  1
	 
				下半部分 第一行星星个数为9,如何计算得来
				凑!!!
				总行数5
					5 * 2 - (i * 2 - 1) --> 5 * 2 - i * 2 + 1 => (5 - i) * 2 + 1
					(5 - i) * 2 + 1
					10 - 1 = 9;
					10 - 3 = 7;
					10 - 5 = 5;
*/
class Demo6 {
	public static void main(String[] args) {
		// 菱形总行数 ,一旦是单数
		int line = 25;
		
		// 图形一分为二,上半部分为line / 2 + 1行
		// 外层循环控制总行数,这里是line / 2 + 1行
		for (int i = 1; i <= line / 2 + 1; i++) {
			// 内层循环1:控制空格的个数
			for (int j = 1; j <= line / 2 + 1 - i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2:控制星星的个数 星星 = 2 * 当前行号 - 1;
			for (int k = 1; k <= 2 * i - 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
		
		// 下半部分一共line / 2行
		// 外层循环控制总行数,总计line / 2行
		for (int i = 1; i <= line / 2; i++) {
			// 内层循环1: 展示空格个数
			for (int j = 1; j <= i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2: 控制星星的个数
			for (int k = 1; k <= (line / 2 - i) * 2 + 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值