选择结构用于判断给定的条件,然后根据判断的结果来控制程序的流程。
主要的选择结构有:if选择结构和switch多选择结构。有如下结构:
-
if单选择结构
-
if-else双选择结构
-
if-else if-else多选择结构
-
switch结构
一、if单选择语句
语法结构
if(布尔表达式){
语句块
}
if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。流程图如图所示。
【示例】
1
public class Test1 {
public static void main(String[] args) {
int i = (int) (6 * Math.random() + 1);
int j = (int) (6 * Math.random() + 1);
int k = (int) (6 * Math.random() + 1);
int count =i+j+k;
if (count>15){
System.out.println("今天手气不错");
}else if(count>=10&&count<15){
System.out.println("今天手气一般");
}else{
System.out.println("今天手气很差");
}
System.out.println("得了:"+count+"分");
}
}
2
public class Test2 {
public static void main(String[] args) {
double r=Math.random()*4;
double area=Math.PI*Math.pow(r,2);
double circle=Math.PI*r*2;
System.out.println("半径为:"+r);
System.out.println("面积为:"+area);
System.out.println("周长为:"+circle);
if(area>circle){
System.out.println("面积大于周长");
}else{
System.out.println("周长大于面积");
}
}
}
【运行结果】
1
2
二、if-else if-else多选择结构
语法结构:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}……
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。流程图如图所示。
【示例】
public class Test3 {
public static void main(String[] args) {
int a=(int)(Math.random()*100);
System.out.println(a);
if (a>=85){
System.out.println("等级A");
}else if(a>=70&&a<85){
System.out.println("等级B");
}else if (a>=60&&a<70){
System.out.println("等级C");
}else{
System.out.println("等级D");
}
}
}
【运行结果】
三、switch多选择结构
语法结构
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:
默认语句;]
}
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任一case值不匹配,则进入default语句(如果存在default语句的情况)。
根据表达式值的不同可以执行许多不同的操作。switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String)。
大家要注意,当布尔表达式是等值判断的情况,可以使用if-else if-else多选择结构或者switch结构,如果布尔表达式区间判断的情况,则只能使用if-else if-else多选择结构。
switch多选择结构的流程图如图所示。
【示例】
public class Test4 {
public static void main(String[] args) {
char c = 'a';
int s = (int) (Math.random() * 26);
char c1 = (char) (c + s);
System.out.println(c1);
switch(c1){
case 'a':
case 'e':
case 'i':
case 'u':
System.out.println("元音");
break;
case 'y':
case 'w':
System.out.println("半元音");
break;
default:
System.out.println("辅音");
}
}
}
【运行结果】