多重循环结构

大家好,我是IT小白105,今天让各位了解一下多重循环结构的用法和例子
什么是二重循环呢
一个循环体又包含另一个循环结构
while(循环条件1) {
//循环操作1
while(循环条件2) {
//循环操作2
}
}

for(循环条件1) {
//循环操作1
for(循环条件2) {
//循环操作2
}
}

do {
//循环操作1
do {
//循环操作2
}while(循环条件1);
}while(循环条件2);

while(循环条件1) {
//循环操作1
for(循环条件2) {
//循环操作2
}
}
例如:有三个班,每个班有4个学生。在控制台输入每个学生的成绩。求出每个班的平均分。
分析:
固定次数可用for的多重循环
外层控制班级数目。内层控制每个班的学生
因为求的是每个班的平均分不是3个班总共平均分,所以总分变量要在内循环外面。外循环里面
代码:


```java
public class JAVA2 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int ban=3;
        for (int i=0;i<3;i++){
            double sum=0;
            System.out.println("请输入第"+(i+1)+"个班的学生的成绩");
            for (int j=0;j<4;j++){
                System.out.print("请输入第"+(j+1)+"个学员的成绩");
                double score=input.nextDouble();
                sum=sum+score;
            }
            System.out.println("第"+(i+1)+"个班级的学员平均分"+sum/4);
        }
    }
}

执行结果;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121102429922.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjcwOTIyMg==,size_16,color_FFFFFF,t_70)
例如:打印各种图形 直角三角形 矩形 9*9乘法表都可用for的多重循环具体代码如下

例如;控制台输入三角形高度。打印相应三角形。每行为1,3,5,7。。。。。。
分析:外层循环控制行数。
内层循环控制数目。
最后在内层循环外补空格
代码:

```java
import java.util.Scanner;

public class JAVA4 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入直角三角形的高");
        int gao=input.nextInt();
        for (int i=1;i<=gao;i++){
            for (int j=1;j<=2*i-1;j++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}

执行结果:
在这里插入图片描述
乘法口诀表:
外层循环控制行数。i<=9
内层循环控制多少个式子j<=i
第 i 行的 j 个式子结果为j*i
代码:

public class JAVA7 {
    public static void main(String[] args) {
        for (int i=1;i<=9;i++){
            for (int j=1;j<=i;j++){
                int sum=j*i;
                System.out.print(j+"*"+i+"="+sum+"\t");
            }
            System.out.print("\n");
        }
    }
}

结果:
在这里插入图片描述

冒泡排序
数字升序
比较相邻两数
小的换到前面
每轮结束后最大数换到最后

数组,数组.length = 5
这5个数字如何存放
1.外层循环,循环变量 i控制比较多少轮。
2.内层循环,循环变量 j控制每轮比较多少次 每次循环后的 i 则不用再继续比较
3.交换数据
升序口诀
N 个数字来排队
两两相比小靠前
外层循环 N-1
内层循环 N-1-I
降序只要
做到两两相比大靠前。
例如:控制台输入
5个学生成绩,
按降序打印输出!
分析:首先for循环录入数组
外层循环控制循环多少轮 i
内层控制多少次 j
考虑数组最初为[0],所以 i<数组长度-1.
考虑循环比较后的 i 不需要再继续比较 j<数组长度-1-i。
j交换数据
循环打印按降序输出
代码

public class JAVA8 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入5名学员成绩");
        int[] scores = new int[5];
        for (int i = 0; i < scores.length; i++) {
            int score = input.nextInt();
            scores[i] = score;
        }
        for (int i = 0; i < scores.length - 1; i++) {
            for (int j = 0; j < scores.length - 1 - i; j++) {
                if (scores[j] < scores[j + 1]) {
                    int temp = scores[j];
                    scores[j] = scores[j + 1];
                    scores[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < scores.length; i++) {
            System.out.println(scores[i]);
        }
    }

}

执行结果为:
在这里插入图片描述
scores[j] < scores[j + 1]如果看不懂的话可以通过举例 scores[j]=15 j=1
score[j+1]=20 j+1=2
也就等于
scores[j]=15
score[j+1]=20
如果15 <20就把15和20调换位置
15 20换成
20 15就相当于降序
而15已经比较过了就不用再比较了所以下次循环要减掉15也就是剪掉 i.这就是 j<数组长度-1-i。

如果为升序则把
scores[j] < scores[j + 1]
换为
scores[j] >scores[j + 1]
运行结果
在这里插入图片描述
多重循环中break的用法,可以跳出内循环执行外循环。
例如:有五家店。用户每次进去店购买东西,店家会问是否离开如果离开则显示结账。不离开则显示买了件衣服,每家店最多买三件衣服,五家店买完 求出一共买了多少衣服
分析:外层循环控制店 i<5
内层循环控制买的次数 j<3 .如果输入的为y,则利用break跳出内循环,否则就是买了件衣服。因为求的是总共所以总数变量放在多重循环外。
代码:

import java.util.Scanner;

public class java11 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int count=0;
        for (int i=0;i<5;i++){
            System.out.println("欢迎光临第"+(i+1)+"家店");
            for (int j=0;j<3;j++){
                System.out.print("要离开吗y/n");
                String str=input.next();
                if (str.equals("y")){
                    break;
                }else {
                    System.out.println("买了1件衣服");
                    count++;
                }
            }
            System.out.println("离店结账");

        }
        System.out.print("一共买了"+count);
    }
}

结果如下:
在这里插入图片描述
多重循环中利用continue可以跳出当前正在进行的循环,执行下一次循环。
例如三个人买三件商品要求控制台输入价格如果每件商品价格大于300.
则可以享受八折优惠,统计出每个人有几件可以享受优惠的商品。
分析:
外层循环控制人数 i<3
内层循环控制商品件数 j<3
因为要算出每个人的件数所以,每个人的件数变量 count应该放在外层循环内,内层循环外,如果放到最外面,则求出的是三人一共买的商品。
如果买的商品价格小于等于300,利用continue跳出当前循环 如果大于300则count++
代码如下:

import java.util.Scanner;

public class java10 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        for (int i=0;i<3;i++){
            int count=0;
            System.out.println("请输入"+(i+1)+"个人所购的三件商品价格");
            for (int j=0;j<3;j++){
                double price=input.nextDouble();
                if (price<=300){
                    continue;
                }
                count++;
            }
            System.out.println("第"+(i+1)+"个人共有"+count+"件商品享有8折!");
        }
    }
}

结果如下:
在这里插入图片描述
明天更新
吃货联盟!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值