循环嵌套-案例

循环嵌套:一个循环作为另外一个循环的循环体或者是循环体的一部分。

for、while、do..while可以相互嵌套。

循环嵌套示例1:

        需求:打印如下内容:

        1 2 3 4 5

        1 2 3 4 5

        1 2 3 4 5

        代码:

	public static void main(String[] args) {
		//需求:打印如下内容:
	    // 1 2 3 4 5
        // 1 2 3 4 5
        // 1 2 3 4 5
		//方法一:
		System.out.println("1 2 3 4 5 ");
		System.out.println("1 2 3 4 5 ");
		System.out.println("1 2 3 4 5 ");
		
		System.out.println("-----华丽的分割线-----");
		
		//方法二:
		for(int j = 1; j <= 5; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		
		for(int j = 1; j <= 5; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		
		for(int j = 1; j <= 5; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		
		System.out.println("-----华丽的分割线-----");
		
		//方法三:
		for(int i = 0; i < 3; i++) {
			System.out.println("1 2 3 4 5 ");
		}
		
		System.out.println("-----华丽的分割线-----");
		
		//方法四:
		for(int i = 0; i < 3; i++) {
			for(int j = 1; j <= 5; j++) {
				System.out.print(j + " ");
			}
			System.out.println();
		}
	}

上述案例方法四中:一个循环就作为了另外一个循环体的内容,这就是循环嵌套。外层循环执行1次,内存循环要执行1遍。 

循环嵌套示例2:

        需求:打印如下内容:

                1

                1 2

                1 2 3

                1 2 3 4

                1 2 3 4 5

                代码:

    public static void main(String[] args) {
        //需求:打印如下内容:
//      1 
//      1 2 
//      1 2 3 
//      1 2 3 4 
//      1 2 3 4 5 
        /*
         * 分析:
         * 1.一共5行
         * 2.每行打印的数据是 从1开始到n结束。(n的值,第一行是1,第二行是2,第三行是3,第四行是4,第五行是5)
         * 3.因此,可以通过循环(外层循环)控制行的变化。循环5次。从第1行到第5行
         * 4.每一行的数据,可以通过一个循环(内层循环)打印 从1到n的数据。(n的值,第一行是1,第二行是2,第三行是3,第四行是4,第五行是5)
         * 
         * */
        //不使用循环嵌套
        //第1行
        for(int j = 1; j <= 1; j++) {
            System.out.print(j + " ");
        }
        System.out.println();
        //第2行
        for(int j = 1; j <= 2; j++) {
            System.out.print(j + " ");
        }
        System.out.println();
        //第3行
        for(int j = 1; j <= 3; j++) {
            System.out.print(j + " ");
        }
        System.out.println();
        //第4行
        for(int j = 1; j <= 4; j++) {
            System.out.print(j + " ");
        }
        System.out.println();
        //第5行
        for(int j = 1; j <= 5; j++) {
            System.out.print(j + " ");
        }
        System.out.println();
        
        System.out.println("-----华丽的分割线-----");
        //使用循环嵌套
        for(int i = 1; i <= 5; i++) {
            for(int j = 1; j <= i; j++) {
                System.out.print(j + " ");
            }
            System.out.println();
        }
    }
循环嵌套示例3:

需求:打印如下内容:

1 2 3 4

1 2 3

1 2

1

代码:

	public static void main(String[] args) {
		//需求:打印如下内容:
//		1 2 3 4 
//		1 2 3 
//		1 2 
//		1 
		//不使用循环嵌套
		//第1行
		for(int j = 1; j <= 4; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		//第2行
		for(int j = 1; j <= 3; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		//第3行
		for(int j = 1; j <= 2; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		//第4行
		for(int j = 1; j <= 1; j++) {
			System.out.print(j + " ");
		}
		System.out.println();
		
		System.out.println("-----华丽的分割线-----");
		
		//循环嵌套
		for(int i = 4; i >= 1; i--) {
			for(int j = 1; j <= i; j++) {
				System.out.print(j + " ");
			}
			System.out.println();
		}
	}
循环嵌套示例4:

需求:打印九九乘法表。

1x1=1

1x2=2 2x2=4

1x3=3 2x3=6 3x3=9

...

代码:

	public static void main(String[] args) {
		// 需求:打印九九乘法表。
//		1x1=1
//		1x2=2 2x2=4
//		1x3=3 2x3=6 3x3=9
//		... 
		// 不使用嵌套
		// 第1行
		for (int j = 1; j <= 1; j++) {
			System.out.print(j + "x" + 1 + "=" + j * 1 + " ");
		}
		System.out.println();
		// 第2行
		for (int j = 1; j <= 2; j++) {
			System.out.print(j + "x" + 2 + "=" + j * 2 + " ");
		}
		System.out.println();
		// 第3行
		for (int j = 1; j <= 3; j++) {
			System.out.print(j + "x" + 3 + "=" + j * 3 + " ");
		}
		System.out.println();
		// 第4行
		for (int j = 1; j <= 4; j++) {
			System.out.print(j + "x" + 4 + "=" + j * 4 + " ");
		}
		System.out.println();
		// 第5行
		for (int j = 1; j <= 5; j++) {
			System.out.print(j + "x" + 5 + "=" + j * 5 + " ");
		}
		System.out.println();
		// 第6行
		for (int j = 1; j <= 6; j++) {
			System.out.print(j + "x" + 6 + "=" + j * 6 + " ");
		}
		System.out.println();
		// 第7行
		for (int j = 1; j <= 7; j++) {
			System.out.print(j + "x" + 7 + "=" + j * 7 + " ");
		}
		System.out.println();
		// 第8行
		for (int j = 1; j <= 8; j++) {
			System.out.print(j + "x" + 8 + "=" + j * 8 + " ");
		}
		System.out.println();
		// 第9行
		for (int j = 1; j <= 9; j++) {
			System.out.print(j + "x" + 9 + "=" + j * 9 + " ");
		}
		System.out.println();
		
		System.out.println("-----华丽的分割线-----");
		
		for(int i = 1; i <= 9; i++) {
			for(int j = 1; j <= i; j++) {
				System.out.print(j + "x" + i + "=" + j * i + " ");
			}
			System.out.println();
		}
	}
循环嵌套示例5:

需求:输出如下图形。

@@@@@

    @@@@@

        @@@@@

            @@@@@

代码:

	public static void main(String[] args) {
		// 需求:打印如下图形。
		// @@@@@
		//  @@@@@
		//   @@@@@
		//    @@@@@
		//分析:
		//一共4行,因此外层循环要循环四次
		//对于每一行:包含3部分(空格、@以及换行符):即外层循环的循环体包含3部分。
		//第1行 空格是0个,@是5个,换行符是1个
		//第2行 空格是1个,@是5个,换行符是1个
		//第3行 空格是2个,@是5个,换行符是1个
		//第4行 空格是3个,@是5个,换行符是1个
		for(int i = 0; i < 4; i++) {
			for(int j = 0; j < i; j++) {
				System.out.print(" ");
			}
			for(int k = 0; k < 5; k++) {
				System.out.print("@");
			}
			System.out.println();
		}
	}
循环嵌套示例6:

需求:打印如下图像

            @

        @@@

    @@@@@

@@@@@@@

代码:

	public static void main(String[] args) {
		// 需求:打印如下图形。
		//   @
		//  @@@
		// @@@@@
		//@@@@@@@
		//分析:
		//1.一共四行。外层循环要循环4次
		//2.每一行包含3个部分:空格、@、换行符
		//3.第1行 3个空格  1个@ 1个换行符
		//  第2行 2个空格  3个@ 1个换行符
		//  第3行 1个空格  5个@ 1个换行符
		//  第4行 0个空格  7个@ 1个换行符
		//空格个数和行号的关系是 空格个数 = 4 - 行号
		//@个数和行号的关系是  @个数 = 2 * 行号 - 1
		//换行符是每行1个。
		for(int i = 1; i <= 4; i++) {
			for(int j = 0; j < 4 - i; j++) {
				System.out.print(" ");
			}
			for(int k = 0; k < 2 * i - 1; k++) {
				System.out.print("@");
			}
			System.out.println();
		}
	}
循环嵌套示例7:

需求:打印如下图形。

          @

      @@@

   @@@@@

@@@@@@@

    @@@@@

       @@@

          @

代码:

	public static void main(String[] args) {
		// 需求:打印如下图形。
		//   @
		//  @@@
		// @@@@@
		//@@@@@@@
		// @@@@@
		//  @@@
		//   @
		//分析:
		//这个菱形可以看做是一个上三角形和一个下三角形拼成的图形。
		//一、首先是上三角形。先用一个循环嵌套打印出来上三角
		//1.一共4行。外层循环要循环4次
		//2.每一行包含3个部分:空格、@、换行符
		//3.第1行 3个空格  1个@ 1个换行符
		//  第2行 2个空格  3个@ 1个换行符
		//  第3行 1个空格  5个@ 1个换行符
		//  第4行 0个空格  7个@ 1个换行符
		//空格个数和行号的关系是 空格个数 = 4 - 行号
		//@个数和行号的关系是  @个数 = 2 * 行号 - 1
		//换行符是每行1个。
		//二、其次是下三角形。也用一个循环嵌套打印出来下三角
		//1.一共是3行。外层循环要循环3次
		//2.每行包含3部分:空格、@、换行符
		//3.第1行  1个空格  5个@ 1个换行符
		//  第2行  2个空格  3个@ 1个换行符
		//  第3行  3个空格  1个@ 1个换行符
		//空格个数和行号的关系是  空格个数与行号相等
		//@个数和行号的关系是  @个数  = (3 - 行号) * 2 + 1
		//换行符是每行1个
		for(int i = 1; i <= 4; i++) {
			for(int j = 0; j < 4 - i; j++) {
				System.out.print(" ");
			}
			for(int k = 0; k < 2 * i - 1; k++) {
				System.out.print("@");
			}
			System.out.println();
		}
		for(int i = 1; i <= 3; i++) {
			for(int j = 1; j <= i; j++) {
				System.out.print(" ");
			}
			for(int k = 1; k <= (3 - i) * 2 + 1; k++) {
				System.out.print("@");
			}
			System.out.println();
		}
	}
循环嵌套示例8:

需求:求1! + 2! + 3! + 4!的和是多少。

代码:

public static void main(String[] args) {
		//需求:求1! + 2! + 3! + 4!的和是多少。
		//分析:
		//1.内层循环 计算每个数的阶乘  
		//2.外层求 阶层的和。
		long sum = 0;
		for(int i = 1; i <= 4; i++) {
			long num = 1;
			for(int j = 1; j <= i; j++) {
				num *= j;
			}
			sum += num;
		}
		System.out.println(sum);
	}
循环嵌套示例9:
  1. 需求:打印100以内所有的质数。质数:大于1的自然数中,只能被1和自身整除的数。

  2. 代码:

	public static void main(String[] args) {
		//需求:打印100以内所有的质数。质数:大于1的自然数中,只能被1和自身整除的数。
		//外层循环:从2开始循环到100
		//内层循环:判断数字是不是质数. 让这个数n从2开始除,一直除到n-1,一旦余数为0,表示不是质数。否则是质数。
		for(int i = 2; i < 100; i++) {
			boolean isPrime = true;
			for(int j = 2; j < i; j++) {
				if(i % j == 0) {
					isPrime = false;
					break;
				}
			}
			if(isPrime) {
				System.out.println(i);
			}
		}
	}
循环嵌套示例10:

需求:我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只小鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?请编写程序实现。

代码:

public static void main(String[] args) {
		//我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:
		//5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只小鸡。
		//现在用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?请编写程序实现。
		//分析:
		//1. 5文钱买1只公鸡。100文钱最多买20只公鸡。也就是说公鸡的取值范围是:[0,20]
		//2. 3文钱买1只母鸡。100文钱最多买33只母鸡。也就是说母鸡的取值范围是:[0,33]
		//3. 1文钱买3只小鸡。100文钱最多买300只小鸡(因为是最多100只鸡,所以最多是100只)。也就是说小鸡的取值范围是:[0,100] 注:小鸡需要3只3只买
		//假设买了 x只公鸡,y只母鸡,z只小鸡。  5*x + 3*y + z/3 = 100 并且 x + y + z = 100,求x、y、z的组合有哪些
		for(int x = 0; x <= 20; x++) {
			for(int y = 0; y <= 33; y++) {
				for(int z = 0; z <= 100; z += 3) {
					if(5 * x + 3 * y + z / 3 == 100 && x + y + z == 100) {
						System.out.println("公鸡" + x + "只,母鸡" + y + "只,小鸡" + z + "只");
					}
				}
			}
		}
	}
循环嵌套总结

循环嵌套可以看成是普通的循环,只不过循环体是另外一个循环。

for循环、while循环、do..while循环可以相互嵌套。

如果循环嵌套里,内层循环有break,break只能结束内层循环,无法结束外层循环,即:break在哪个循环里,结束哪个循环。

循环总结

循环是程序开发中比较常用的语法,循环结构可以让某些代码重复执行。

Java提供了for循环、while循环和do..while循环。

明确知道循环次数使用for循环。

不知道循环次数使用while循环。

至少执行一次循环体的时候使用do..while循环。

开发中要避免死循环,可通过break结束死循环。

break用在循环中,作用是结束循环,只能结束本层循环(循环嵌套时),break通常与if语句连用。

continue用于结束本次循环,进入下一次循环。

循环嵌套时:可以把内层循环看成外层循环的循环体。理论上讲,循环嵌套的层数是无限的。for循环、while循环、do..while循环可以相互嵌套。最常见的是for循环嵌套for循环。

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中的循环嵌套是指在一个循环体内部再嵌套另一个循环体。这样做的目的是为了在某些情况下能够更灵活地控制循环的执行。Python不仅支持while循环嵌套应用,也支持for循环嵌套应用。通过循环嵌套,我们可以实现更复杂的循环逻辑。 举个例子来说明,假设我们要打印一个九九乘法表,可以使用两层循环来实现嵌套。外层循环控制行数,内层循环控制每一行的列数。具体代码如下: ```python for i in range(1, 10): for j in range(1, i+1): print(f"{j} * {i} = {i*j}", end="\t") print() ``` 上述代码中,外层循环变量`i`代表行数,内层循环变量`j`代表列数。在内层循环中,通过`print()`函数打印出每个乘法表达式,并使用制表符`\t`进行分隔。通过这样的循环嵌套,我们就能够输出完整的九九乘法表。 循环嵌套在实际编程中经常用到,特别是在处理多维数据结构或者遍历嵌套的数据集合时。它可以帮助我们更方便地处理复杂的循环逻辑,提高编程效率。同时,需要注意的是,循环嵌套可能会增加程序的执行时间,因此在实际应用中,我们要合理地使用循环嵌套,避免不必要的性能损耗。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【Python入门篇】——Python中循环语句(while循环嵌套应用,嵌套案例)](https://blog.csdn.net/2201_75366661/article/details/130295172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [python:嵌套循环](https://blog.csdn.net/qq_39314932/article/details/86552078)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值