Java的流程控制语句之选择结构
分类:
顺序结构
意思:从上向下,依次执行。
选择结构
java语言中提供了两种选择结构语句
1.if语句
2.swith语句
if语句
if语句的注意事项:
A:关系表的式无论简单还是复杂,结果必须是boolean类型
B:if语句控制的语句体如果是一条语句体,大括号可以省略
如果是多条语句体,就不可省略,建议永远不要省略。
C:一般来说:有左大括号没有分号;有分号就没有左大括号
if语句有三种格式
//if语句的第一种格式:
if(关系表达式){
语句体
}
执行流程;
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
//if语句的第二种格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程;
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就不执行语句体2
if语句的第二种格式也完成了三元运算符可以完成的效果
所以,我们认为在一定范围它们可以转换
区别:
三元可以用,if语句实现,反之不行
什么时候if语句实现但不能用三元改进呢?
当if语句控制的操作是一个输出语句的时候不成立
因为三元运算符是一个运算符,运算符操作完毕后就应该有一个结果,而不是一个输出。
//if语句的第三种格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
执行流程;
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1 if语句结束
如果是false就继续判断关系表达式2看其结果是
true还是false
如果是true就执行语句体2if语句结束
如果是false就继续判断关系表达式……看其结果是
true还是false
……
如果没有任何关系表达式为false,就执行语句体n+1;
if语句例题和代码实现
if语句的使用场景;
- 针对表达式是一个Boolean类型的判断
- 针对一个范围的判断
题一:键盘录入x的值,计算出y的并输出
x>=3 y = 2x + 1
-1<=x<3 y = 2x
x<=-1 y = 2x - 1
import java.util.Scanner;
class YunSuan{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数据");
int x = sc.nextInt();
int y;
if (x>=3){
y = 2*x + 1;
}else if(-1<=x && x<3){
y = 2*x;
}else if(x<=-1){
y = 2*x - 1;
}
System.out.println("y:"+y);
}
}
题二:键盘录入月份的值,输出对应的季节
import java.util.Scanner;
class Li{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数据");
int x = sc.nextInt();
if(x<1 || x>12){
System.out.println("输入有误");
}else if ( 3<=x && x>=4){
System.out.println("春");
}else if(6<=x && x<=8){
System.out.println("夏");
}else if(x>=9 && x<=11){
System.out.println("秋");
}else {
System.out.println("冬");
}
}
}
题三:获取三个数的最大值
//此案例主要是为了讲解if语句是可以嵌套的,而且是可以任意的嵌套
class Li{
int a = 10;
int b = 20;
int c = 30;
int max;
if (a>b){
if(a>c){
max = a;
}else{
max = c;
}
}else{
if(b>c){
max = b;
}else {
max = c;
}
System.out.println("max:"+max);
}
}
switch语句
switch语句格式:
switch(表达式){
case值1:
语句体1;
break;
case值2:
语句体2;
break;
…………
default:
语句体:n+1;
break;
}
格式解释:
switch:表示这是个switch选择结构
表达式:这个地方的取值的是有限制的
byte short int char
JDK5以后可以是枚举
JDK7以后可以是字符串
case:后面跟的是要和表达式进行比较的值
语句体:要执行的代码
break;表示中断,结束的意思,可以控制switch语句的结束
default:当所有的值和表达是不匹配的时候,就执行default控制的语句。
执行流程:
首先计算出表达式的值
其次和case一次比较一旦有对应的值,就会执行相应的
语句,在执行的过程中遇到break就结束
最好,如果所有的case都和表达式的值不匹配,就会执行
default语句体部分,然后程序结束
switch语句使用的注意事项:
一.case后面只能是常量不可以是变量;
二.多个case后面的值不可以重复;
三. default可以省略但是不建议,
因为它的作用是对不真确的情况给出提示
四.break可以省略,但是结果可能不是我们想要的
它会出case穿透现象,所以现建议不省略
五.default可以出现在任意位置。建议放到最后。
因为它代表所有的case都和表达式的值不匹配才执行default语句
六.switch语句的结束条件;
a:遇到break就结束。
b:执行到末尾就结束了。
switch语句例题和代码实现
//摸拟单向选择题
import java.util.Scanner;
class Li{
public static void main(String[] args){
Scanner sc = new Scanner (System.in);
System.out.println("下面的几个人你最爱谁");
System.out.println("65 林青霞");
System.out.println("66 张曼玉");
System.out.println("67 刘德华");
System.out.println("68 王力红");
int x = sc.nextInt();
switch(x){
case 65:
System.out.println("恭喜选择正确");
break;
case 66:
System.out.println("选择错误");
break;
case 67:
System.out.println("选择错误");
break;
case 68:
System.out.println("选择错误");
break;
default:
System.out.println("你输入的数据有误");
break;
}
}
}
if语句和switch语句的区别:
if语句:
- 针对结果是Boolean类型的判断
- 针对一个范围的判断
- 针对几个常量值的判断
switch语句: 针对几个常量值的判断