if语句、switch语句的叙述
选择结构
今天我们讲讲Java中的选择结构,顾名思义,程序在运⾏过程中会⾯临很多的选择问题。这时就需要合适的语句来执⾏它。通常解决选择问题时有两种语句⽐较合适,它们是if语句和switch语句。
if 语句
if控制语句共有3种不同的形式,分别是单分⽀结构、双分⽀结构和多分⽀结构。
⼀、if语句的语法格式如下:
//if单分⽀语句的语法格式
if(表达式){
语句
}
if单分⽀语句执⾏步骤:
1.⾸先对表达式的结果进⾏判断
2.如果表达式的结果为真,则执⾏花括号⾥的语句
3.如果表达式的结果为假,则跳过花括号⾥的语句
⼆、if-else语句的语法格式如下:
//if-else语句的语法格式
if(表达式){
语句1
}else{
语句2
}
if-else语句执⾏步骤:
1.⾸先对表达式的结果进⾏判断
2.如果表达式的结果为真,则执⾏语句1
3.如果表达式的结果为假,则执⾏语句2
三、if-else if-else语句的语法结构如下:
//if-else if-else语句的语法格式
if(表达式1){
语句1
}else if(表达式2){
语句2
}else{
语句3
}
if-else语句执⾏步骤:
1.⾸先对表达式1的结构进⾏判断
2.如果表达式1的结果为真,则执⾏语句1
3.如果表达式1的结果为假,则对表达式2的结果进⾏判断
4.如果表达式2的结果为真,则执⾏语句2
5.如果表达式2的结果为假,则执⾏语句3
if 语句嵌套使⽤
下⾯⽤⼀道例题详细介绍if 嵌套语句的使⽤。
每个做⽗母的都关⼼⾃⼰孩⼦成⼈后的⾝⾼,据有关⽣理卫⽣知识与数理统计分析表明,影响⼩孩成⼈后⾝⾼的因素有遗传、饮⾷习惯与坚持体育锻炼等。⼩孩成⼈后的⾝⾼与其⽗母的⾝⾼和⾃⾝的性别密切相关。
设faHeight为其⽗⾝⾼,moHeight为其母⾝⾼,⾝⾼预测公式为:
男性成⼈时⾝⾼ = (faHeight + moHeight) * 0.54
⼥性成⼈时⾝⾼ = (faHeight * 0.923 + moHeight) / 2
此外,如果喜爱体育锻炼,那么可增加⾝⾼2%,如果有良好的卫⽣饮⾷习惯,那么可增加⾝⾼1.5%。
利⽤给定公式和⾝⾼预测⽅法对你的⾝⾼进⾏预测。
要求⽗母的⾝⾼、是否爱好体育锻炼等参数从键盘输⼊。
提⽰:字符串的⽐较使⽤ .equals⽅法,如 String a=”爱好”; a.equals(“爱好”)的值为true
public class Height {
public static void main(String[] args){
double faHeight,moHeight,myHeight;
String gender,bite,sports;
System.out.println("请分别输⼊我的性别、⽗亲⾝⾼、母亲⾝⾼、有⽆良好的饮⾷习惯、有⽆坚持运动:");
Scanner num=new Scanner(System.in);
();
Double();
Double();
();
();
if(gender.equals("男")){
if(bite.equals("有")&&sports.equals("⽆")){
myHeight=(faHeight+moHeight)*0.54*1.015;
System.out.println("我的⾝⾼为:"+ myHeight);
}else if(bite.equals("⽆")&&sports.equals("有")){
myHeight=(faHeight+moHeight)*0.54*1.02;
System.out.println("我的⾝⾼为:"+ myHeight);
}else if(bite.equals("有")&&sports.equals("有")){
myHeight=(faHeight+moHeight)*0.54*1.035;
System.out.println("我的⾝⾼为:"+ myHeight);
}else{
myHeight=(faHeight+moHeight)*0.54;
System.out.println("我的⾝⾼为:"+ myHeight);
}
}else{
if(bite.equals("有")&&sports.equals("⽆")){
myHeight=(faHeight*0.39+moHeight)/2*1.015;
System.out.println("我的⾝⾼为:"+ myHeight);
}else if(bite.equals("⽆")&&sports.equals("有")){
myHeight=(faHeight*0.39+moHeight)/2*1.02;
System.out.println("我的⾝⾼为:"+ myHeight);
}else if(bite.equals("有")&&sports.equals("有")){
myHeight=(faHeight*0.39+moHeight)/2*1.035;
System.out.println("我的⾝⾼为:"+ myHeight);
}else{
myHeight=(faHeight*0.39+moHeight)/2;
System.out.println("我的⾝⾼为:"+ myHeight);
}
}
}
}
题⽬解析:
根据题⽬所⽰,这⾥可以很好的使⽤if 嵌套语句。⾸先⽤⼀个if-else 语句判断性别,然后在if 语句⾥⾯再使⽤if-else if-else 语句判断有⽆良好的饮⾷习惯、有⽆坚持运动,运⾏结果如下:
注意:
(1)if 语句后⾯的括号内的条件表达式的值必须为布尔值,结果为true或者false;
(2)花括号⾥只有⼀条语句时可以省略花括号,但为了程序具有更⾼的可读性,⼀般不省略花括号;
(3)else ⼦句不能单独使⽤,它必须是if 语句的⼀部分;
(4)不论多分⽀if 语句中有多少个条件表达式,只会执⾏符合条件的⼀个,如果没有符合条件的,则执⾏else ⼦句中的语句;
if 语句练习
现在输⼊⼀个成绩,判断该成绩为优秀、良好、及格还是不及格。
// 多分⽀if语句的使⽤
public class Demo4 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("请输⼊成绩:");
int Int();
if(score>=90){
System.out.println("优秀");
}else if(score>=80&&score<90){
System.out.println("良好");
}else if(score>=60&&score<80){
System.out.println("及格");
}else{
System.out.println("不及格");
}
}
}
其运⾏结果如下:
switch 语句
除 if 语句以外,Java还提供了switch 语句,⽤于实现多分⽀选择结构。其语法格式如下:
//switch语句的语法格式
switch(表达式){
case 常量1:
语句;
break;
case 常量2:
语句;
break;
case 常量3:
语句;
break;
...
java switch case stringdefault:
语句;
break;
}
switch语句的执⾏步骤如下:
1.计算switch语句后表达式的值
2.将表达式的值从上到下依次与case后的常量值进⾏⽐较
3.如果相等就执⾏该常量后⾯的代码块,遇到break语句就结束
4.如果与任何⼀个case后的常量值都不匹配,就执⾏default中的代码块
switch语句应⽤
输⼊出⽣年份末尾两位数,判断年龄。仅仅以部分年份以作演⽰。
// 以出⽣年份末尾两位作为判断,95,96,97,98
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输⼊出⽣年份后两位:");
byte Byte();
switch(year){
case95:
System.out.println("25岁");
break;
case96:
System.out.println("24岁");
break;
case97:
System.out.println("23岁");
break;
case98:
System.out.println("22岁");
break;
default:
System.out.println("other");
break;
}
}
输⼊出⽣年份末尾两位数year,将其依次与case 后⾯常量⽐较,例如输⼊97,程序⽐较后执⾏97后⾯的语句输出,然后遇到break结束。运⾏结果如下:
注意
(1)如果case 后没有break 语句,程序将继续向下执⾏,直到遇到break 语句结束
(2)switch 后⾯的表达式是⼀个确切的值,⽤于跟case 后的常量作⽐较
(3)可以没有default 语句,且default 语句⼀般放在末尾
if 语句和switch 语句的区别
if 语句适⽤于区间范围判断,⽽switch 语句适⽤于等值选择判断。在某些情况下if 语句可以⽤switch 语句来完成,同样switch 语句也可以⽤if 语句来完成。在编码过程根据实际情况定选⽤if 语句还是switch语句,选择不同程序的运⾏过程、速度也会有所不同。
以供参考,不⾜之处还请指教

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。