选择结构语句根据是否满足某个条件确定执行哪些操作,分为if条件语句和switch条件语句。
1. 单分支if语句
(1)if语句是指如果满足某种条件,就进行某种处理,格式如下。
if(条件) {
// 执行语句
}
根据上述格式中,判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会执行。if语句的执行流程如下所示。
(2)单分支if案例
编写程序,从键盘上读取一个整数,若该数是偶数,输出该数。
public static void main(String[] args) {
int num;
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数:");
num = input.nextInt();
if(num % 2 == 0){
System.out.println(num + "是偶数.");
}
}
2. 双分支if-else语句
(1)if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理,格式如下。
if(条件) {
// 执行语句1
}else{
// 执行语句2
}
在上述格式中,判断条件是一个布尔值。当判断条件为true时,if后面{}中的执行语句1会执行。当判断条件为false时,else后面{}中的执行语句2会执行。执行流程如下所示。
(2)双分支if-else案例
编写程序,从键盘上读取一个整数,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。
public static void main(String[] args) {
int num;
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数:");
num = input.nextInt();
if(num % 2 == 0){
System.out.println(num + "是偶数.");
}else {
System.out.println(num + "是奇数.");
}
}
3. 嵌套的if语句
(1)嵌套的if语句概述
if或if-else结构中语句可以是任意合法的Java语句,甚至可以是其他的if或if-else结构,内层的if结构称为嵌套在外层的if结构中,格式如下。
if (判断条件){
if (判断条件){
执行语句1
}else{
执行语句2
}
}
(2)嵌套的if语句案例
求a、b和c中最大值并将其保存到max中,要求使用一个嵌套的if结构。
public static void main(String[] args) {
int max;
Scanner input = new Scanner(System.in);
System.out.println("请输入a:");
int a = input.nextInt();
System.out.println("请输入b:");
int b = input.nextInt();
System.out.println("请输入c:");
int c = input.nextInt();
if(a > b){ //a大 再比较 c
if(a > c){
max = a;
}else{
max = c;
}
}else{ //b大 再比较 c
if(b > c){
max = b;
}else{
max = c;
}
}
System.out.println("最大值是:" + max);
}
4. 多分支的if-else语句
(1)多分支的if-else概述
如果程序逻辑需要多个选择,可以在if语句中使用一系列的else if语句,这种结构称为阶梯式if-else结构,格式如下。
if (判断条件1){
执行语句1
} else if (判断条件2){
执行语句2
}else if (判断条件n) {
执行语句n
}else {
执行语句n+1
}
(2)多分支的if-else语句案例
输入学生的百分制成绩,打印输出等级的成绩。等级规定为,90分(包括)以上的为“优秀”,80分(包括)以上的为“良好”,70分(包括)以上的为“中等”,60分(包括)以上的为“及格”,60分以下为“不及格”。
要求:输入语句为“请输入张三同学的成绩:”,其中“张三”为本人姓名。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入张三的成绩:");
double score = input.nextDouble();
String level = "";
if(score > 100 || score < 0){
System.out.println("输入的成绩不正确。");
System.exit(0);
}else if(score >= 90){
level = "优秀";
}else if(score >= 80){
level = "良好";
}else if(score >= 70){
level = "中等";
}else if(score >= 60){
level = "及格";
}else{
level = "不及格";
}
System.out.println("张三的成绩等级为" + level);
}
5. 条件运算符
(1)条件运算符概述
Java提供了一个三元运算符,可以同时操作三个表达式,三元运算符语法格式如下所示。
判断条件 ? 表达式1 : 表达式2
在上述语法格式中,当判断条件为true时,计算表达式1的值作为整个表达式的结果,否则计算表达式2的值作为整个表达式的结果。
(2)条件运算符案例
条件运算符可以实现if-else结构,分别用if-else和条件运算符求整数a、b两个数中的最大值。
-
if-else方式实现
public static void main(String[] args) {
int x = 0;
int y = 1;
int max;
if (x > y) {
max = x;
} else {
max = y;
}
System.out.println(max);
}
-
条件运算符方式实现
public static void main(String[] args) {
int x = 0;
int y = 1;
int max = x > y? x : y;
System.out.println(max);
}
6. switch语句
(1)switch语句格式
switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码。一般格式如下:
switch (expression){
case value1:
statements [break;]
case value2:
statements [break;]
…
case valueN:
statements [break;]
[default:
statements]
}
(2)switch语句注意事项
expression是一个表达式,它的值必须是byte、short、int、char、enum、String。
case后的value为常量或常量表达式,与表达式类型相一致,expression与value值比较,如果两值相等会执行该case后的语句。
break语句功能是退出switch语句。
default为可选子句,如果expression与value都不匹配,则执行default语句。
(3)switch语句案例
-
使用switch语句根据给出的数值输出对应中文格式的星期。
public static void main(String[] args) {
int week = 5;
switch (week) {
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("输入的数字不正确...");
break;
}
}
-
使用switch语句根据给出的数值输出对应工作日还是休息日。
public static void main(String[] args) {
int week = 2;
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("今天是工作日");// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
break;
case 6:
case 7:
System.out.println("今天是休息日");// 当 week 满足值 6、7 中任意一个时,处理方式相同
break;
}
}
7. 练习
编写程序,从键盘输入一个农历月份,输出该月所在的季节。
春,农历1、2、3月;夏,农历4、5、6月;秋,农历7、8、9月;冬,农历的10、11、12月。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入农历月份:");
int month = input.nextInt();
String season = "";
switch (month){
case 1:
case 2:
case 3:
season = "春季";
break;
case 4:
case 5:
case 6:
season = "夏季";
break;
case 7:
case 8:
case 9:
season = "秋季";
break;
case 10:
case 11:
case 12:
season = "冬季";
break;
default:
System.out.println("非法月份");
System.exit(0);
}
System.out.println("该月在" + season);
}