流程控制:循环
流程控制
一、switch case
1.语法结构
switch(表达式){
case常量1:
//执行语句1
break;
case 常量2:
//执行语句2
break;
…
default:
//执行语句
break;//结束当前的switch case 结构
}
String season=“summer”;
switch(season){
case “spring”:
System.out.println(“春暖花开”);
break;
case “summer”:
system.out.println(“夏日炎炎”);
break;
case “aut”:
system.out.println(“秋高气爽”);
break;
case “winter”:
system.out.println(“冬雪皑皑”);
break;
default:
system.out.println(“季节输入有误”);
break;
}
2.说明:
(1)switch表达式只能是特定的数据类型,byte \ short \char \ int \枚举(JDK5.0新增) \ String(JDK7.0新增)
(2)case后都是跟常量,使用表达式与这些常量做相等的判断,不能进行范围的判断。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BC8C97sK-1689558407154)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689204761323.png)]
(3)开发中,使用case匹配的情况有限。
(4)break:可以使用在switch-case中,一旦使用执行此break关键字,就跳出当前的switch-case结构。
(5)default:类似与if -else中的else.default位置是灵活的。default是可有可没有的。
3.练习:
学生成绩大于60分,输出及格,小于60分,输出不及格。
class SwitchCaseTest {
public static void main(String[] args) {
int score=78;
switch(score/10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.print(“不及格”);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.print(“及格”);
break;
default:
System.out.print(“成绩输入有误”);
}
}
}
或者score/60: case 0:不及格 case1:及格
从键盘上输入2023年的“month”和“day”,要求通过程序输入输出的日期为2023年的第几天。
import java.util.Scanner;
class SwitchCaseTest {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println(“请输入2023年的月份:”);
int month=input.nextInt();
System.out.println(“请输入天数:”);
int day=input.nextInt();//阻塞
// switch-case的使用
int sumday=0;//记录总天数
switch(month) {
case 12:
sumday+=30 ;
case 11:
sumday+=31 ;
case 10:
sumday+=30;
case 9:
sumday+=30 ;
case 8:
sumday+= 31;
case 7:
sumday+= 30;
case 6:
sumday+= 31;
case 5:
sumday+= 30;
case 4:
sumday+= 31;
case 3:
sumday+= 28;//记录2月份的天数
case 2:
sumday+= 30;//记录1月份的天数
case 1:
sumday+= day;
}
System.out.print(sumday);
input.close();
}
}
二、for循环
1.说明:
Java中规范了三种循环结构:for,while,do-while
凡是循环结构,就一定会有4个要素:
~1初始化条件 ~2循环条件(一定是boolean类型的变量或 表达式)
~3循环体 ~4迭代部分
2.for循环的格式
for(~1 ; ~2 ; ~4 ){
~3
}
执行过程:~1 ----》2-------》3------》4------》2-------》~3
3.案例
遍历1-100以内所有的偶数,并获取偶数的个数,获取所有偶数的和。
int count=0;//记录偶数的个数
int sum=0;//记录所有偶数的和
for(int i=0;i<=100;i++){
if(i%2==0){
System.out.println(i);
count++;
sum+=i;
}
}
System.out.println(count);
System.out.println(sum);
输出所有的水仙花数,所谓的水仙花数是指应该3位数,其各个位上数字立方和等于其本身。
class ForTest {
public static void main(String[] args) {
// 遍历所有的三位数
for(int i=100;i<=999;i++) {
// 获取其各个位上的数
int ge=i%10;
int shi=i/10%10;
int bai=i/100;
if(i==gegege+shishishi+baibaibai) {
System.out.println(i);
}
}
}
}
输入两个正整数m和n,求其最大公约数和最小公倍数
class ForTest {
public static void main(String[] args) {
// 需求1:最大公约数
int m=12,n=20;
int min=(m // 方法1: int result=1; for(int i=1;i if(m%i0&&n%i0) { result=i; } } System.out.println(result); // 方法2: for(int min;i>=1;i–) { if(m%i0&&n%i0) { System.out.println(i); break; } } // 需求2:最小公倍数 int max=(m>n)?m:n; for(int i=max;i<=m*n;i++) { if(i%m0&&i%n0) { System.out.println(i); break; } } } } 初始化条件 while(循环条件){ 循环体 迭代部分 } 初始化作用域不同。while循环中的初始化条件在while的循环结束后,依然有效。 随机生成一个100以内的数,猜这个随机数是多少 从键盘输入数,如果大了,提示大了,小了提示小了;如果猜对了,就不再猜了,并统计一共猜了几次 import java.util.Scanner; class WhileTest { public static void main(String[] args) { //1.生成一个【1,100】的随机整数 int random=(int)(Math.random()*100)+1; //2.使用Scanner,从键盘获取数据 Scanner scan=new Scanner(System.in); int guess=scan.nextInt(); //3.声明一个变量,记录猜的次数 int guessCount=1; //4.使用循环结构,进行多次循环的对比和获取数据 while(guess!=random) { if(guess>random) { System.out.print(“猜大了”); }else if(guess System.out.print(“猜小了”); } System.out.print(“请输入1-100范围内的整数:”); guess=scan.nextInt(); } System.out.print(); } } 初始化条件 do{ 循环体 迭代体 }while(循环条件) 初始化条件-------》循环体----------》迭代体---------》循环条件 先跑一遍再判断 do -while循环至少执行一次循环体。 for,while,do-while循环三者之间是可以相互转换的。】 do-while循环结构,在开发中,相较于for,while循环来讲,使用的较少 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bMkVsu9j-1689558407156)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689380135054.png)] 退出循环有两种方式:1.不满足while中的循环条件 2.break跳出最近的循环。 class WhileTest { public static void main(String[] args) { // 需求:遍历100以内的偶数,并输出偶数的个数和总和 int i=1; int count=0;//记录偶数的个数 int sum=0;//记录偶数的总和 do { if(i%2==0) { System.out.println(i); count++; sum+=i; } i++; }while(i<=100); System.out.print(“偶数的个数为:”+count+“偶数的总和:”+sum); } } 声明变量balance并初始化为0,用以表示银行账户的余额,下面通过ATM机程序实现存款,取款功能。 1.存款 2.取款 3.显示余额 4,退出 请选择(1-4): import java.util.Scanner; class DowhileTest { public static void main(String[] args) { // 1.定义balance的变量,记录账户余额‘ double balance=0.0; boolean flag=true;//控制循环的结束 Scanner scan=new Scanner(System.in);//实例化Scanner // 2.声明ATM取款界面 do { System.out.println(“ATM”); System.out.println(“1.存款”); System.out.println(“2.取款”); System.out.println(“3,显示余额”); System.out.println(“4.退出”); System.out.print(“请选择(1-4):”); // 3.使用Scanner获取用户的选择 int section=scan.nextInt(); // 4.根据用户的选择执行1 switch(section) { case 1: System.out.print(“请输入存款金额”); double money1=scan.nextDouble(); if(money1>0) { balance+=money1; } break; case 2: System.out.print(“请输入取款金额”); double money2=scan.nextDouble(); if(money2>0&&money2<=balance) { balance-=money2; }else { System.out.println(“输入的数据有误或余额不足”); } break; case 3: System.out.print(“账户余额为:”+balance); break; case 4: flag=false; System.out.print(“欢迎下次使用”); break; default: System.out.println(“输入有误,请重新输入”); } }while(flag); // 关闭资源 scan.close(); } } 最简单的“无限”循环格式: while(true), for( ; ; ) 开发中,有时候不确定需要循环多少次,需要根据循环内部某些条件,来控制循环的结束(使用break)。 如果循环不能结束,则构成了死循环。 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。 import java.util.Scanner; class DowhileTest { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int positiveCount=0;//记录正数个数 int negativeCount=0;//记录负数个数 while(true) { System.out.print(“请输入一个整数(输入0时结束程序):”); int num=scan.nextInt(); if(num>0) { positiveCount++; }else if(num<0) { negativeCount++; }else { System.out.println(“程序结束”); break; } } System.out.println(“正数的个数为”+positiveCount+“负数的个数为:”+negativeCount); } } 是指一个循环结构A的循环体是另一个循环结构B 外层循环:循环结构A 内层循环:循环结构B 1)对于两层嵌套循环来说,外层循环控制行数,内层循环控制列数 2)举例:外层循环执行m次,内层循环执行n次,则内层循环的循环体共执行m*n次 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gAgAN2sE-1689558407157)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689382700029.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxAYb7uD-1689558407157)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689382965336.png)] 内层控制列数,外层控制行数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAB1uGA0-1689558407158)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689383149689.png)] (1)显示菱形,99乘法表 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ohqUYlUp-1689558407158)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689384439634.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLJq3Pmo-1689558407158)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689384944597.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ps9uc0fk-1689558407160)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689385013651.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xd2BlQDz-1689558407161)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689385048481.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P5bzEYMG-1689558407163)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689385080841.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W8c1vz1K-1689558407164)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689385560001.png)] 使用范围 在循环结构中的作用 break: switch-case 循环结构 结束(跳出)当前循环结构 continue 循环结构中 结束(跳出)当次循环结构 相同点:在此关键字的后面不能声明执行语句。 就近原则:跳出离得最近的循环 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ddxx7q4q-1689558407165)(C:\Users\yuehuimin\AppData\Roaming\Typora\typora-user-images\1689386356958.png)] 找出100以内所有的素数(质数)?100000以内的 class PrimeNumberTest { // 质数:2,3,5,7,11,19,23 /* * 质数:只能被1和它本身整除的自然数。 * —》换句话说,从2开始到这个自然数为止,不存在此自然数的约数 */ public static void main(String[] args) { /* * 方法1: for(int i=2;i<=100;i++) {//遍历100以内的自然数 int num=0;//记录i的约数的个数(从2开始,到i-1为止) // 判断i是否是质数 for(int j=2;j if(i%j==0) { num++; } } if(num==0) { System.out.println(i); } } */ // 方法2: for(int i=2;i<=100;i++) { boolean isFlag=true; for(int j=2;j // 判断i是否是质数 if(i%j==0) { isFlag=false; } } if(isFlag) {//if(isFlag==true) System.out.println(i); } } } }三、while循环
1.while循环格式
2.for循环与while循环的区别:
3.案例
guessCount++;
四、do-while
1.do-while格式
2.执行过程
3.说明
4.案例
五、“无限”循环
1.语法格式:
2.适用场景:
3.案例
六、嵌套循环
1.嵌套循环
2.说明
3.案例
七、break和continue的使用
八、经典案例
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
