选择结构语句根据是否满足某个条件确定执行哪些操作,分为if条件语句和switch条件语句。
(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 + "是偶数.");
- }
- }
(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 + "是奇数.");
- }
- }
(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);
- }
(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);
- }
(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);
- }
(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;
- }
- }
编写程序,从键盘输入一个农历月份,输出该月所在的季节。
春,农历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);
- }