ToB企服应用市场:ToB评测及商务社交产业平台
标题:
003-Java程序流程控制
[打印本页]
作者:
悠扬随风
时间:
2024-5-12 23:39
标题:
003-Java程序流程控制
3. Java程序流程控制(重点)
程序的三种控制结构
3.1 分支结构 if, switch
3.1.1 if
if 分支
根据条件(真或假)来决定执行某段代码。
if分支应用场景
if 第一种形式
执行流程:
首先判定条件表达式的结果,如果为true执行语句体,为false就不执行语句体。
if 第二种形式
执行流程:
首先判定条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。
if 第三种形式
执行流程:
先判定条件1的值,如果为true则执行语句体1,分支竣事;如果为false则判定条件2的值
如果值为true就执行语句体2,分支竣事;如果为false则判定条件3的值
...
如果没有任何条件为true,就执行else分支的语句体n+1。
总结
if分支的作用是什么?
可以根据条件,选择执行某段程序
if分支的写法有几种?
多学一招: if使用的几个常见问题
如果if语句的{}中只有一行代码的环境,{}可以省略不写(但是不推荐省略).
if(条件){},()后不能跟“;”否则{}中的代码将不受if的控制了.
训练: 用户登录
package com.itheima.a_if;
import java.util.Scanner;
/**
* @author: LXHYouth
* @date: 2024/3/3 11:39
* @description:
*/
/*
if 案例: 用户登录
需求: 键盘录入用户名和密码
如果用户名不是1, 程序输出:用户名错误
如果密码不是2, 程序输出:密码错误
如果用户名和密码没问题, 程序输出:登录成功
提示:
使用Scanner接收用户输入的信息,并使用变量接收
使用if...else if...else 组织程序逻辑
*/
public class Demo03 {
public static void main(String[] args) {
// 1. 创建一个自己的扫描器
Scanner sc= new Scanner(System.in);
// 2.提示用户输入用户名
System.out.print("请输入用户名: ");
int name = sc.nextInt();
// 提示用户输入密码
System.out.print("请输入密码: ");
int passWord= sc.nextInt();
if(name!=1){
System.out.println("用户名错误!!!");
}else if(passWord!=2){
System.out.println("密码错误!!!");
}else{
System.out.println("登录成功!!!");
}
}
}
复制代码
3.1.2 switch
switch分支
是通过比较值来决定执行哪条分支。
switch分支的执行流程
先执行表达式的值,再拿着这个值去与case后的值进行匹配。
与哪个case后的值匹配为true就执行哪个case块的代码,碰到break就跳出switch分支。
如果全部case后的值与之匹配都是false,则执行default块的代码。
if跟switch的比较
if适合做
区间匹配,功能更加强大.
switch适合做
值匹配,性能更好.
总结:
switch分支的格式、执行流程是怎么样的?
if、switch的区别有哪些?
if适合做
区间匹配,功能更加强大.
switch适合做
值匹配,性能更好.
3.1.3 switch使用时注意事项
使用switch分支的几点注意事项
表达式范例只能是byte、short、int、char,JDK5开始支持罗列,JDK7开始支持String,不支持double、float、long。
case给出的值不答应重复,且只能是字面量,不能是变量。
正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
当case中没有写break时,就会开启穿透,后续的case不再匹配,直接执行, 直到碰到下一个break或者整个switch执行完毕后才竣事, 穿透现象是可以加以利用, 优化代码的.
3.1.4 总结
使用switch时有哪些注意事项?
表达式范例可以是byte、short、int、char、罗列、String,不能是double、float、long
case给出的值不答应重复,且只能是字面量,不能是变量.
正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
switch穿透性能解决什么问题?
存在多个case分支的代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。
案例:
package com.itheima.b_switch;
import java.util.Scanner;
/**
* @author: LXHYouth
* @date: 2024/3/3 11:39
* @description:
*/
/*
分支结构 switch
1. 使用待匹配的值去匹配对应的case值, 执行对应的语句体, 遇到break就结束switch语句
2. 所有的case都匹配不到,则执行default中的语句体
switch(待匹配的值){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
....
case 值n:
语句体n;
break;
default:
语句体;
break;
}
*/
/*
switch注意事项:
1. 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
2. case给出的值不允许重复,且只能是字面量,不能是变量。
3. 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
switch的case穿透
当case中没有写break时,就会开启穿透,后续的case不再匹配,直接执行,直到遇到下一个break或者整个switch执行完毕后才结束
穿透现象是可以加以利用, 优化代码的
*/
public class Demo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//需求: 根据今天星期几, 判断是工作还是休息
System.out.print("请输入今天星期几: ");
int weekDay= sc.nextInt();
switch(weekDay){
case 1:
System.out.println("工作");
break;
case 2:
System.out.println("工作");
break;
case 3:
System.out.println("工作");
break;
case 4:
System.out.println("工作");
break;
case 5:
System.out.println("工作");
break;
case 6:
System.out.println("休息");
break;
case 7:
System.out.println("休息");
break;
default:
System.out.println("输入错误!!!");
}
//需求: 根据定义的月份month,输出对应的季节
// 3、4、5:春季
//6、7、8:夏季
//9、10、11:秋季
//其它 : 输入月份有误
// 如果发现上下有多个case下的代码完全能相同, 可以利用穿透现象进行简写,只写最后一个case里的代码
System.out.print("请输入月份: ");
int month = sc.nextInt();
switch(month){
case 12:
case 1:
case 2:
System.out.println("现在是冬季");
break;
case 3:
case 4:
case 5:
System.out.println("现在是春季");
break;
case 6:
case 7:
case 8:
System.out.println("现在是夏季");
break;
case 9:
case 10:
case 11:
System.out.println("现在是秋季");
break;
default:
System.out.println("输入月份有误!!!");
}
}
}
复制代码
3.2 循环结构 for, while, do-while
3.2.1 for循环
for循环
控制一段代码反复执行很多次。
应用场景
for循环格式
for(初始化语句 ; 条件判断语句; 条件变更语句 ) {
循环体语句 ; //要重复执行的代码
}
复制代码
[code]// 输出3次hello worldfor ( int i = 1; i
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4