目录
java选择结构有两种:
1.if选择结构
2.switch选择结构
1.if选择结构
以下由易到难,由浅入深的顺序
1-1 单分支if语句
格式:
if(条件表达式){
//如果条件表达式结果为真,则可以运行到该程序内
//否则会跳过该程序段
}
图解:
先判断“表达式”的值,如果值为真(非零),则执行“语句”;如果值为假(零),则不执行语句。
1-2 双分支if语句(if-else)
!注意:else和if条件互为补集,if-else结构构成全集
格式:
if(条件){
//语句1:条件为true的情况下会运行
}
else{
//语句2:条件为false的情况下运行
}
图解:
先判断“表达式”的值,如果值为真(非零),则执行“语句1”;如果值为假(零),则执行“语句2”。可见,语句1和语句2不会同时执行,也不会都不执行,总是从二者中选其一执行,因此称为双分支选择结构。
1-3 多重if语句
格式:
if(条件1){
//语句1:条件1为true时运行
}
else if(条件2){
//语句2:条件1为false且条件2为true时运行
}
else if(条件3){
//语句3:条件1、2为false且条件3为true时运行
}
else{
//语句4:条件1、2、3都为false时运行
}
图解:
首先依次判断表达式1的值,若其值为真就执行语句1,若其值为假就继续判断表达式2,依次类推,如果所有表达式都为假,就执行语句n。
案例:
/**
* 实现成绩的优良中差评级,大于90分为优,大于75为良,大于等于60为及格,小于60为不及格
*/
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入成绩(0-100之内的整数)");
double score=input.nextDouble();
if (score>90){//大于90
System.out.println("成绩为优");
}
else if(score>75){//76-90
System.out.println("成绩为良");
}
else if(score>=60){//60-75
System.out.println("成绩为合格");
}
else{//小于60
System.out.println("成绩为不合格");
}
}
}
1-4 if嵌套语句
格式:
if(条件1){
//语句1:条件1为true
if(条件2){
//语句2:条件1、2都为true
}
//语句3:条件1为true
}
else{
//语句4:条件1位false
if(条件3){
//语句5:条件1位false,条件3为true
}
//语句6:条件1为false
}
图解:
书写多层嵌套结构的程序时,应在每个分支处加花括号,以增加程序的可读性。若没有加花括号,则系统会根据就近配对原则进行各分支的匹配。
所谓“就近配对原则”是指:else子句总是和前面距离它最近的但是又不带其他else子句的if语句配对。
案例:
/**
* 实现成绩的优良中差评级,大于90分为优,大于75为良,大于等于60为及格,小于60为不及格
*/
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入成绩(0-100之内的整数)");
double score = input.nextDouble();
if (score >= 60) {
if (score < 75) {//60-75
System.out.println("成绩为及格");
}
else
if (score < 90) {//76-90
System.out.println("成绩为良");
}
else {//大于90
System.out.println("成绩为优");
}
}
else {//小于60
System.out.println("成绩为不合格");
}
}
}
2.switch结构
格式:
switch(变量){
case 常量1://代码
break;
case 常量2://代码
break;
……
default://代码
}
(1)switch语句中有4个关键字:switch、case、break、default。
(2)switch后面的表达式必须用圆括号括起来,且该表达式的值必须是整型或者字符型。
(3)case与其后面的常量表达式之间必须有空格,常量表达式后面是分号。常量表达式中不能含有变量或函数。常量表达式的值必须是整型或字符型。如果表达式的值为浮点型,则想办法转换为整型或字符型。否则会出现错误。
(4)所有case分支后面的常量表达式必须互不相同。
(5)default分支通常写在最后,也可以写在前面,它的位置不受限制。各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
(6)switch语句可以嵌套。
(7)在case后,允许有多个语句,可以不用{}括起来。
图解:
案例:
import java.util.Scanner;
/**
* 输出星期数
* 从键盘输入一位整数,当输入1~7时,输出“星期一”~“星期日”
* 输入其他数字时,提示用户重新输入
*/
public class WeekNum {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
int num;
do {
System.out.println("请输入一位1-7之间的整数,输入0退出程序:");
num=input.nextInt();
switch(num){
case 0:
System.out.println("程序结束");
break;
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("您输入的数字不合格,只能输入1-7范围的数字!");
}
}while(num!=0);
}
}
3.if、switch的异同点:
等值判断用switch