学习java的第六节课 多重循环

本文探讨了在Java编程中使用多重循环的原因,通过实例解释如何使用多重循环输出多边形如平行四边形和等边三角形。同时,详细介绍了break和continue语句的用法及其在循环控制中的差异。

多重循环及程序调试

1.为什么要使用多重循环

在这里插入图片描述

像以上这些循环输出图形,进入一次循环之后在这次循环里再次做循环,需要使用二重循环

//用*输出一个5X5的正方形
public class Test0701 {
	public static void main(String[] args) {
		//i代表行数
		//外部循环过程
		//参数初始化:i,行数从1开始
		//条件判断:i<=5 行数一共有五行
		//更新循环变量i++,每次循环行数+1
		for(int i=1;i<=5;i++) {
			//o:每一行星星的列数
			//参数初始化:i,列数从1开始
			//条件判断:i<=5 列数一共有五行
			//更新循环变量i++,每次循环行数+1
			for(int o=1;o<=5;o++) {
				//这里要用print,不能使用println使他换行
				System.out.print("*");
			}
				//每一行星星输出完毕后要换行,输出一个换行
				System.out.println();
		}
		
	}
	
}

嵌套循环,外层每进入一”次“,内层循环要执行一整”遍“。

2.多重循环输出多边形
输出一个平行四边形

在这里插入图片描述

在输出星星的时候还要输出左边的空白

//用*输出一个5X5的平行四边形
public class Test0702 {

	public static void main(String[] args) {
				//i代表行数
				//外部循环过程
				//参数初始化:i,行数从1开始
				//条件判断:i<=5 行数一共有五行
				//更新循环变量i++,每次循环行数+1
		for(int i=1;i<=5;i++) {
			//o:空白(在循环内定义的变量仅限于在循环中使用,出循环后还可以重新定义该变量。)
			//参数初始化:o从1开始
			//条件判断:每一行的空白数量都是5-行数i,这样会让每次输出的空格数量-1
			//跟新循环变量o++,每次循环时o+1
			for(int o =1;o<=5-i;o++) {
				
				System.out.print(" ");
			}
			
			//o:每一行星星的列数
			for(int o=1;o<=5;o++) {
				//这里要用print,不能使用println使他换行
				System.out.print("*");
			}
				//每一行星星输出完毕后要换行,输出一个换行
				System.out.println();
			

	}

输出一个等边三角形

在这里插入图片描述

多列几个数据寻找他们的规律,寻找变量与内部函数里面的的关系。

//输出一个三角形
public class Test0703 {

	public static void main(String[] args) {
		//输出行数
		//外部循环过程
		
		for(int i=1;i<=5;i++) {
			//输出空白
			for(int o =1;o<=5-i;o++) {
				System.out.print(" ");
			}
			//输出列数星星
			//参数初始化:o,行数从1开始
			//条件判断:o<=2*i-1,符合运算的规律
			//更新循环变量o++,每次循环行数+1
			for(int o =1;o<=2*i-1;o++) {
				System.out.print("*");
			}System.out.println();
		}

	}

}

与平行四边形一样,每次外部循环内部循环的每行要输出相应的空格和星星,寻找空格,星星与“ i ”之间的关系,写成内部循环。

3.break语句

在这里插入图片描述

import java.util.*;

public class Test0704 {

public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
	System.out.println("请输入你的姓名");

	String name = input.next();
	// 做一个标识,检查用户输入时,输入是否有误 true代表无误 变为false则为输入有误
	boolean flag = true;

	double sum = 0;
	for (int i = 1; i <= 5; i++) {
		System.out.println("请输入第" + i + "门功课的成绩:");
		// 每门课的成绩
		double fen = input.nextDouble();

		// 如果录入为负,停止录入并提示
		if (fen < 0) {
			System.out.println("输入的数值不符合规定。");
			flag = false;// 不符合规定时,将标识变为false
			break;// break跳出循环之后会继续输出循环外的语句
		}

		sum += fen;

	}
	// 写一个选择结构,只挑选输入对的(flag的值为true的)
	if (flag == true) {
		// 平均分
		double arg = sum / 5;
		System.out.println(name + "平均成绩为" + arg);
		}
	}
}

break语句跳出循环之后会继续输出循环外的语句,所以要在之前声明一个布尔型变量,做一个标识,录入为正确标为true,录入错误标为false,利用if选择结构,只有标识为true的才可以进入计算平均成绩,标识为false的则跳出循环。

为什么需要continue

在这里插入图片描述

import java.util.*;

public class Test0705 {
	public static void main(String[] args) {
		//根据输入班级人数录入相应成绩,计算80分以上人员的比例
		Scanner input = new Scanner(System.in);
		//输入班级总人数
		System.out.println("请输入班级人数");
		int ren = input.nextInt();
		//班级中大于80分的人数
		int shu =0;
		//循环输入同学的成绩
		for(int i = 1;i<=ren;i++) {
			System.out.println("请输入第"+i+"位同学的成绩:");
			int fen = input.nextInt();
			//如果分大于80的进入选择结构,则shu进行一次++记录一人
			if(fen>80) {
				shu ++;
			}
		}
		System.out.println("80分以上同学的人数是:"+shu);
		//用计算来算出班级中大于80分的人员比例,要把数值转换为double。
		System.out.println("80分以上同学所占的比例是"+(double)shu/ren*100+"%");
		
			}
}

		

不使用跳转语句的方法👆。

在这里插入图片描述

通常与条件语句一起使用,跳出本次循环而进入下一次循环。

import java.util.Scanner;

public class Test0706 {

	public static void main(String[] args) {
		//根据输入班级人数录入相应成绩,计算80分以上人员的比例
		Scanner input = new Scanner(System.in);
		//输入班级总人数
		System.out.println("请输入班级人数");
		int ren = input.nextInt();
		//班级中大于80分的人数
		int shu =0;
		//循环输入同学的成绩
		for(int i = 1;i<=ren;i++) {
			System.out.println("请输入第"+i+"位同学的成绩:");
			int fen = input.nextInt();
			//使用continue语句,不是符合分数大于80的则进入选择结构执行continue语句返回循环开始进行下一次循环。
			//符合分数大于80的则不进入选择结构,由shu++进行一次+1记录。
			if(fen<=80) {
				continue;
			}
			shu ++;
		}
		System.out.println("80分以上同学的人数是:"+shu);
		//用计算来算出班级中大于80分的人员比例,要把数值转换为double。
		System.out.println("80分以上同学所占的比例是"+(double)shu/ren*100+"%");
		
		
		

	}

}

使用跳转语句continue👆

在这里插入图片描述


public class Test0708 {
	public static void main(String[] args) {
		int sum = 0;
		//循环1-10
		for (int i = 0; i <= 10; i++) {
		//如果输出不为偶数的则不进行输出终止此次循环用continue返回该循环开始进行下一次循环
			if (i % 2 != 0) {
				continue;
			}
            sum += i;
		}
		System.out.println(sum);
	}
}
对比break和continue

1.使用场合

​ break常用于switch结构和循环结构中

​ continue一般用于循环结构中

2.作用(循环结构中)

​ break 语句终止本次循环,程序跳转到循环块外的下一条语句

​ continue跳出本次循环,进入下一次循环

​ 双重循环也是如此

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值