多重循环及程序调试
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跳出本次循环,进入下一次循环
双重循环也是如此
本文探讨了在Java编程中使用多重循环的原因,通过实例解释如何使用多重循环输出多边形如平行四边形和等边三角形。同时,详细介绍了break和continue语句的用法及其在循环控制中的差异。

被折叠的 条评论
为什么被折叠?



