目录
1.循环结构
1.1 循环结构的使用场景
当需要进行重复相同的操作时,就需要用到循环结构来提高代码书写效率。
1.2 什么是循环结构
循环结构需要具有两种要素,第一是循环条件,包括初始条件(即进入循环的条件以及变量的初始化)和结束条件(即退出循环的判定);第二是循环的操作,必须是需要重复执行的相同的操作。
Java的循环结构主要包括while循环,do-while循环以及for循环。
2.while循环结构
2.1 代码结构
int i = 0;//对循环变量的初始化
while /*关键字*/ (i < 5/*布尔表达式*/){
循环体;//当布尔表达式为true时会执行的操作
i++;//一般会有循环变量的改变,以达到可能的退出循环的目的
}
//要避免死循环
2.2 示例
int count = 1;
while(count <= 50){
System.out.println("打印第"+count+"份试卷");
count++;
}
结果为
3.do-while循环
3.1 代码结构
int i = 0;
do{
循环体;
i++;
}while(i<5);
//先进行一次循环操作,再判断是否继续循环
3.2 示例
Scanner scanner = new Scanner(System.in);
int zhScore;
do{
System.out.print("请输入张浩的成绩:");
zhScore = scanner.nextInt();
}while(zhScore < 90);
System.out.println("恭喜张浩合格了!");
结果为
3.3 while循环与do-while循环
while直接判断是否进入循环体,如果不满足则不会进入循环,do-while会先执行一次循环操作,再判断是否继续循环。
4.for循环
4.1 代码结构
for/*关键字*/(int i = 0;i < 5;i++){
循环体;
}
//其中括号内的第一个表达式int i = 0是循环变量的初始化
//第二个表达式i < 5是判断退出循环的布尔表达式
//第三个表达式i++ 是每次循环操作结束后的一次对循环变量的操作,以退出循环
//三个表达式可以依据情况省略或在括号外书写,但分号不能省略
4.2 示例
Scanner scanner = new Scanner(System.in);
int score;
double sum = 0;
for(int count = 0;count < 5;count++){
System.out.print("请输入同学第"+(count + 1)+"门课的成绩:");
score = scanner.nextInt();
sum += score;
}
System.out.println("同学成绩的平均分为:"+(sum / 5));
结果为
5.嵌套循环结构
5.1 嵌套循环的应用场景
一般而言,循环体当中还可以添加新的循环体,但最多使用2-3层嵌套循环结构,否则既会影响代码的可读性,也会使代码的运行时间变长,应当采用其他的方法代替
5.2 示例
System.out.println("九九乘法表:");
for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i;j++){
System.out.print(j+" * "+i+" = "+(i * j)+"\t");
}
System.out.println();
}
结果:
6.break语句和continue语句
6.1 break语句
break语句实际上在之前的学习过程中,switch语句的语法结构中已经学习到了,break语句实际上可以理解为跳出当前的代码体,继续往下执行。
6.1.1 示例
需要实现的功能:输入五门课的成绩,并计算平均分,如果输入值为负值,则会退出循环并提示错误。
double sum = 0;//定义成绩的总和
double score = 0;//定义单科成绩
for(int i = 0;i < 5;i++) {
System.out.print("请输入第" + (i + 1) + "门课的成绩:");
score = scanner.nextDouble();
if (score < 0) {
break;//当输入的成绩为负值时,则会跳出循环
}
sum += score;
}
//循环结束后会判断此时的成绩是否为负数
//如果是则会报错,如果不是则正常计算平均值后输出
if(score < 0){
System.out.println("录入错误!");
}else {
System.out.println("平均分为" + (sum/5));
}
结果:
6.2 continue语句
continue语句的作用是跳过循环体中剩余的语句而执行下一次循环
6.2.1 示例
需要实现的功能:利用continue语句实现计算超过80分以上人数所占总人数的比例
System.out.print("班级总人数:");
int sum = scanner.nextInt();//录入班级总人数
int count = 0;//表示大于80分的人数
double score = 0;
for(int i = 0;i < sum;i++){
System.out.print("输入学生"+(i+1)+"的成绩:");
score = scanner.nextDouble();
if(score < 80){
continue;
}
count++;//如果没有执行continue语句,则计数加一
}
System.out.println("80分以上的学生人数为:"+count);
double rate = (double) count / sum;
System.out.println("所占比例为:"+String.format("%.2f",rate)+"%");
//String.format("%.2f",rate) 表示取四舍五入后的两位小数
结果: