内容正文:
5.5 循环嵌套
company profile
company profile
一个循环结构的循环体中还可以有另外的、完整的循环结构,这叫作循环嵌套。
while 循环、do…while 循环、for 循环可以互相任意嵌套。假设外层循环 m 次,内层循环n 次,外层每循环一次,内层就循环 n 次,如果外层循环 m 次,那么内层循环的循环体语句就执行 m×n 次。
public class nestingDemo{
public static void main(String[] args){
int i,j;
for(i=1;i<=5;i++) // 外层循环 5 次,输出 5 行 *
{
for(j=1;j<=8;j++) // 内层循环 8 次,输出 8 个 *
{
System.out.print(" * "); // 内层每循环一次就输出一个 *
}
System.out.println(); // 外层每循环一次就输出一个换行
}
}
}
实例6 输出 5 行 *,每行 8 个。
company profile
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
【运行结果:】
company profile
实训分析:
显然,销量少于 30 万台为循环执行的条件。从 2021 年算起,用变量 i保存经历的年份,初始值为 2021 ;用变量 volume 保存历年的销量,初始值为 2021 年的销量 15 万。每经历一年销量增长 5%,i 值也自增 1,循环结束后的 i 值即是所要输出的年份结果。
【实训 1】 计算产品达到要求销量的年份
company profile
假设某电脑 2021 年的销量为 15 万台,预计以后每年增长 5%,求到哪一年其销量能够超过 30 万台。
public class saleDemo{
public static void main(String[] args){
int i=2021;
double volume=150000;
while(volume<300000){
volume=volume*(1+0.05);
i++;
}
System.out.println(" 到 "+i+" 年,销量超过 300000 台! ");
}
}
【程序代码:】
company profile
到 2036 年,销量超过 300000 台!
【运行结果:】
company profile
实训分析:
用变量 count 作为计数器,初值为 0。每次输入的成绩保存在变量 score中,用 score 与 90 相比较,如果大于等于 90,count 就自增 1,最终 count 保存的就是大于等于 90 分的人数。
【实训 2】 统计成绩大于指定分值的学生人数
company profile
输入 5 名学生的分数,然后统计出大于等于 90 分的人数。
public class countDemo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int i,score,count=0;
for(i=1;i<=5;i++){
System.out.println(" 请输入第 "+i+" 名学生的成绩:");
score=sc.nextInt();
if(score>=90){
count++;
}
}
System.out.println(" 大于等于 90 分的人数是:"+count);
}
}
【程序代码:】
company profile
请输入第 1 名学生的成绩:82
请输入第 2 名学生的成绩:96
请输入第 3 名学生的成绩:76
请输入第 4 名学生的成绩:91
请输入第 5 名学生的成绩:90
大于等于 90 分的人数是:3
【运行结果:】
company profile
实训分析:
使用 do…while 循环。跳出循环的情况有两种:一种是密码输入正确,提示“您已成功登录!”然后用 break 跳出循环;另一种是密码 3 次均输入错误,提示“已超过输入次数上限,银行卡已被锁定!”,跳出循环。
【实训 3】 银行卡锁定功能的实现
company profile
假设银行卡允许用户输错密码的次数为 3 次,超过 3 次后提示“已超过输入次数上限,银行卡已被锁定!”(假设密码是 1369)。
public class pwdDemo{
public static void main(String[] args){
Scanner sc=new S