一、目标
- 掌握if分支结构
- 掌握switch分支结构
二、if分支结构
一、单分支if选择结构
语法结构:
if(条件){
代码块
}
执行规律:
如果条件为true 执行代码块 然后执行接下来的代码
否则 直接执行后面的代码
无论条件是不是复制 条件的结果只能是布尔值 要么为true 要么为false
//张浩Java成绩大于90分,并且音乐成绩大于80分时,
// 或者Java成绩等于100分,音乐成绩大于70分时,老师奖励他,该怎么做呢?
double javaScore=93.5;
double musicScore=95;
if ((javaScore>90&&musicScore>80)||(javaScore==100&&musicScore>70));{
System.out.println("奖励");
二、if-else选择结构
语法结构
if(条件){
代码块1;
}else{
代码块2;
}
执行规律
判断条件是否为true,true执行代码块1
否则执行代码块2
int score=96;
if (score>90){
System.out.println("奖励");
}
else{
System.out.println("蹲马步");
}
三、多分支if选择结构
语法结构:
if(条件1){
代码块1 ;
}else if(条件2){
代码块2;
}else if(条件3){
代码块3;
}else{
代码块4;
}
执行规律
条件1为true 执行代码块1
条件1为false 判断条件2 如果条件2为true 执行代码块2
以此类推
只要执行了一个代码块 即结束这个if-else-if结构
如果所有的条件都不满足,执行else里面的代码
注意事项
1)按照顺序从上往下判断条件,一旦条件满足,就执行相对应{}的代码,不再往下判断其他条件
2)如果所有的条件都不满足,执行else里面的代码3)当条件不是完整的两个边界值时,条件是有顺序的(上下排列的顺序)
Scanner scanner=new Scanner(System.in);
double score= scanner.nextDouble();
if (score>=90){
System.out.println("优秀");
} else if (score>=80) {
System.out.println("良好");
} else if (score>60) {
System.out.println("一般");
}else {
System.out.println("差");
}
四、equals的使用
比较两个字符串内容是否相同,使用equals()进行比较
使用方式
字符串变量名.equals(字符串变量名或者字符串)
返回值为Boolean值,相同为true 不同为false
比较值为equals 比较地址为==(值相同 地址不一定相同)注:==用于基本数据类型比较的是值
==用于包装类(引用类)比较的是对象地址
equals方法没有重写还是比较对象地址
重写equals方法后要看是如何重写的(Object(地址)、Integer(值)、String(先地址后值、地址不同值相同返回true)、自定义类(可以自己定义))
String a="123abc";
String b="123abc";
String c="123";
boolean result1=a.equals(b);
boolean result2=a.equals(c);
System.out.println(result1);
System.out.println(result2);
5、嵌套if选择结构
嵌套if选择结构: 在一个if结构中包含另外一个if结构
语法结构:
if(条件1){
代码块1;
if(条件2){
代码块2;
}else{
代码块3
}
}else{
代码块4;
if(条件3){
代码块5;
}else{
代码块6;
}
}
执行规律
如果条件1为true 执行代码块1 然后判断条件2;
如果条件2为true 执行代码块2 否则执行代码块3;
如果1为false 执行代码块4 然后判断条件3
如果条件3为true 执行代码块5 否则执行代码块6
注意事项
无论结构嵌套多少次 严格安装if结构的执行规律 一层一层往里面判断条件
Scanner scanner=new Scanner(System.in);
double score=scanner.nextDouble();
if(score<10){
System.out.println("恭喜你进入决赛");
System.out.println("请输入你的性别");
String sex=scanner.next();
if(sex.equals("男")){
System.out.println("进入男子决赛组");
}else if (sex.equals("女")){
System.out.println("进入女子决赛组");
}else{
System.out.println("你输入错误");
}
}else{
System.out.println("你没进入决赛继续努力");
}
6、随机数的产生
double num1=Math.random();
- //随机返回一个0.0到1.0之间的double类型的数据
- //Math.random()*10,随机返回一个[0.0,10.0)之间的double类型的数值
- //(int)Math.random()*10,随机返回一个[0,10)之间的int类型的数值
int num2=(int)(Math.random()*10);
System.out.println(num2);
- 随机产生[num1,num2](num2大于num1)之间的int类型的数据
- (int)((Math.random)*(num2-num1)+num1);
二、switch 选择结构
switch选择结构:
语法结构
switch(表达式){
case 值1:
代码块1;
break;
case 值2;
代码块2
break;
........
default:
代码块m;
break;
}
执行规律
先计算表达式的值 与case后面的值进行匹配,然后执行后面的代码块 然后执行break
如果都不匹配 执行default 然后执行break 然后结束整个switch结构
注意事项
1)表达式值的类型可以是int short byte char 枚举类型 String (JDK1.7版本以后)
2)case后面的值不能相同 否则会报警
3)每个case里面的break的作用是退出switch 可以不写 会造成case穿透现象
4)default语句可以写在任意位置,一般写在末尾也可以省略
//韩嫣参加计算机编程大赛
//如果第一名,参加麻省理工大学组织的1个月夏令营
//如果第二名,奖励惠普笔记本电脑一部
//如果第三名,奖励移动硬盘一个
//否则,不给任何奖励
int mingci=4;
switch (mingci){
case 1:
System.out.println("参加麻省理工大学组织的1个月夏令营");
break;
case 2:
System.out.println("奖励惠普笔记本电脑一部");
break;
case 3:
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("不给任何奖励");
}
三、区别与总结
if选择结构,包括以下形式
- 基本if选择结构:可以处理单一或组合条件的情况
- if-else选择结构:可以处理简单的条件分支情况
- 多重if选择结构:可以处理分段的条件分支情况
- 嵌套if选择结构:可以处理复杂的条件分支情况
switch选择结构
- 多重分支并且条件判断是等值判断的情况
- 能用switch解决的问题 都可以用if解决
- 能用if解决的问题 不一定可以用switch解决 因为if解决的可以是范围性的问题 swith不能一个个举例吧。