选择结构
- 概述
- 选择
- 单分支if语句
- 例题讲解
 
 
- 双分支if-else语句
- 例题讲解
 
 
- 条件运算符
- 多分支的if-else语句
- 例题讲解
 
 
- 嵌套的if语句
- 例题讲解
 
 
- switch语句结构
- 例题讲解
- 代码演示
- 运行结果
 
 
 
 
概述
Java中的控制结构,包括:
 1、选择结构( if、if-else、switch )
 2、循环结构( while、do-while、for )
 3、异常处理语句( try-catch-finally、throw)
选择
单分支if语句
语法格式如下所示:
 if(条件表达式) {
 // 语句序列
 }
 单分支if语句中,条件表达式是一个布尔值
 当值为true时,才会执行 {} 中的语句。
 否则,执行 if 结构后面的语句。
例题讲解
例:在求圆面积问题中,要求只有当radius>=0时才计算圆的面积。
if (radius >= 0) {
area = radius * radius * 3.14159;
System.out.println("The area for the circle of radius " + radius + " is " + area);
}
双分支if-else语句
if…else语句是指如果满足给定条件,就进行某种处理,否则就进行另一种处理,其语法格式如下所示:
  if (条件表达式){
 语句序列1
 }
 else{
 语句序列2
 }
 
例题讲解
例:在求圆面积问题中,要求只有当radius>=0时才计算圆的面积,否则,程序给出错误提示。
if (radius >= 0){
area = radius * radius * 3.14159;
System.out.println("The area for the circle of radius "
+ radius + " is " + area);
}
else {
System.out.println(“Negative input”);
}
条件运算符
条件运算符(conditional operator)格式如下:
 condition ? expression1 : expression2
 条件运算符可实现if~else结构。
 若max, a, b是int型变量:
 if (a > b) {
 max = a;
 }else {
 max = b;
 }
    与max = (a > b)? a : b ;一样
多分支的if-else语句
 if  (条件表达式1){
 语句序列1
 }
  else if  (条件表达式2){
 语句序列2
 }
 ......
  else if (条件表达式n ){
 语句序列n
 }
  else{
 语句序列n+1
 }
 条件表达式的结果必须都是布尔型
 
例题讲解
例:输入学生的百分制成绩,打印输出等级的成绩。等级规定为,
 90分及以上的为“A”
 80分及以上的为“B”
 70分及以上的为“C”
 60分及以上的为“D”
 60分以下为“E”。
if (score > =90.0)
grade = ‘A’;
else if (score >= 80.0)
grade = ‘B’;
else if (scroe >= 70.0)
grade = ‘C’;
else if (score >= 60.0)
grade = ‘D’;
else
grade = ‘E’;
嵌套的if语句
其语法形式如下:
 if (表达式1)
     if (表达式2)
    语句1
   else 语句2
 else 
     if (表达式3)
    语句3
    else 语句4
 嵌套应分层缩进书写;
 else总是与它上面最近的未配对的if配对。(就“近”原则)
 嵌套的层数不宜太多,一般以2~3层为宜
 
例题讲解
例:求a、b和c中最大值并将其保存到max中。
if ( a>b )
if ( a>c )
max=a;
else max=c;
else
if ( b>c )
max=b;
else max=c;
switch语句结构
针对表达式的值做出判断,从而决定执行哪些语句。
 switch(表达式){
  case 常量表达式1:
       语句序列1;
       break ;
   case 常量表达式2:
       语句序列2;
       break;
 ......
  case 常量表达式n:
       语句序列n;
       break;
   default:
       语句序列n+1;
 }
 注意
 表达式:类型为byte,short,int,char,enum,String
 并且与各个case后面的常量表达式值的类型一致。
 语句序列:每个case子句后面可以跟多条语句,这些语句可以不用大括号括起来。
 break:一般都有break,若没有则多个case共享一个分支。结束switch结构。
 default:可有可无。 有时,当表达式的值与任何一个case后的常量表达式的值不相同时执行。没有,不执行任何操作,直接跳出switch结构。
例题讲解
例:编写程序,从键盘输入一个年份(如2020年)和一个月份(如2月),输出该月的天数(29)。
闰年的定义是:
如果年份能被4整除但不能被100整除,则是闰年。
如果年份能被400整除,则也是闰年。
代码演示
package shujia_test1;import java.util.Scanner;public class Csdn3_1 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("输入一个年份:");int year = input.nextInt();System.out.print("输入一个月份:");int month = input.nextInt();int numDays = 0;switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:numDays = 31;break;case 4:case 6:case 9:case 11:numDays = 30;break;case 2: // 对2月需要判断是否是闰年if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)){numDays = 29;}else{numDays = 28;}break;default:System.out.println("月份非法.");break;}2020System.out.println(" 该月的天数为:" + numDays);}
}运行结果

 博主用心写,读者点关注,互动传真情,知识不迷路。