2.5程序流程控制
2.5.2程序流程控制:if-else结构
分支结构中的if-else(条件判断结构)
一、三种结构
第一种:
if(条件表达式){
执行表达式
}
第二种:二选一
if(条件表达式){
执行表达式1
}else{
执行表达式2
}
第三种:多选一
if(条件表达式){
执行表达式1
}else if(条件表达式){
执行表达式2
}else if(条件表达式){
执行表达式3
}
……
else{
执行表达式n
}
公式:[a,b] : (int)(Math.random() * (b -a + 1) + a);
说明:
1.else结构是可选的
2.针对于条件表达式:
①如果多个表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
②如果多个表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
③如果多个表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则范围小的就没有机会。
3.if-else结构是可以互相嵌套的
4.如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略。但不建议省略。
如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
注意:需要根据相应的方法来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException,导致程序中止。
注:对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串。 例:System.out.println("请输入你的性别:(男/女)");
String gender = scan.next();//"男"
char genderChar = gender.charAt(0);//获取索引为0位置上的字符
System.out.println(genderChar);
2.5.3 程序流程控制:switch-case结构
1.格式
swith(表达式){
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break;
···
dedault:
执行语句n;
//break;
}
2.说明:
①根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中调用其执行语句。
当调用完执行语句后,继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束。
②break关键字可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
③switch结构中的表达式,只能是如下的6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
④case之后只能声明常量,不能声明范围。
⑤break关键字是可选的。
⑥default:相当于if-else结构中的else。default结构是可选的,且位置是灵活的。
⑦如果switch-case结构中的多个case的执行语句相同,则可以考虑合并。
说明:
1.凡是可以使用swich-case的结构,都可以转换为if-else。反之,不成立。
2.在写分支结构时,当发现既可以使用swich-case(同时switch表达式的取值情况不太多),
又可以使用if-else时,优先选择使用swich-case。 原因:swich-case执行效率稍高
3.如果switch-case结构中的多个case的执行语句相同,则可以考虑合并 4.break在switch-case中是可选的