控制语句 - 选择结构
if语句
-
- if单选择结构:对布尔表达式进行一次判定,若判定为true,则执行 {} 中的语句块,否则跳过该语句块。
public static void main(String[] args) { int a = (int) (6*Math.random())+1; //通过函数Math.random()产生一个随机数 if (a<=3){ //如果a<=3为true,则输出语句块中的语句 System.out.println("手气不太好啊,分数只有: " + a); //如果如果a<=3为true,则输出这条语句 } if (a>3 && a<=5){ //如果a>3 && a<=5为true,则输出语句块中的语句 System.out.println("手气不错,获得分数: " + a); //如果如果a>3 && a<=5为true,则输出这条语句 } if (a==6) { //如果a==6,则输出语句块中的语句 System.out.println("爆炸人品,获得分数: " + a); //如果如果a==6,则输出这条语句 } }
- if双选择结构:当布尔表达式为true时执行语句块1,否则执行语句块2(也就是else部分)。
public static void main(String[] args) { double r = 4 * Math.random(); // 随机产生[0.0 , 4.0]区间的半径,并根据半径求圆的面积和周长 // Math.pow(r , 2) 求半径r的二次方 // Math.Pi 指的是圆周率 double area = Math.PI * Math.pow(r , 2); // S=π*r^2 求圆的面积 double circle = 2 * Math.PI * r; // C=2*πr 求圆的周长 System.out.println("半径为:" + r); System.out.println("面积为:" + area); System.out.println("周长为:" + circle); if (area <= circle) { //如果area <= circle为true,则输出语句块中的语句 System.out.println("面积小于等于周长"); //如果如果area <= circle为true,则输出这条语句 }else { //否则 System.out.println("面积大于周长"); //否则输出这条语句 } }
- if多选择结构:当布尔表达式1为true时执行语句块1;否则判断布尔表达式2(else if),当布尔表达式2为true时执行语句块2;否则判断布尔表达式3(else if),当布尔表达式3为true时执行语句块3,否则……;如果1~n个布尔表达式均判定为false时,则执行语句块n+1,也就是else部分。
public static void main(String[] args) { int score = (int)(100 * Math.random()); //生成一个0-100的随机数,定义分数 System.out.println("成绩: " + score + "分"); if (score < 60) { //如果分数< 60为true,则输出不及格,否则判断下一个else if System.out.println("不及格,再接再厉"); }else if (score < 90) { //如果分数<90为true,则输出及格,否则判断下一个else if System.out.println("及格,继续努力"); }else if (score < 100) { //如果分数<100为true,则输出好成绩,否则跳过该语句块,执行下面的语句 System.out.println("好成绩,继续保持"); } }
- if单选择结构:对布尔表达式进行一次判定,若判定为true,则执行 {} 中的语句块,否则跳过该语句块。
switch语句
-
- switch多选择结构:switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任何case值不匹配,则进入default语句(如果存在default语句的情况),如果default不存在则跳过,执行下面的语句。
switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String)。
当布尔表达式是多值判断,可以使用if多选择结构或者switch结构,值过多建议switch结构(更简洁);如果布尔表达式是区间判断,则只能使用if多选择结构。
// switch语句结构 switch (表达式){ case 值1:{ 语句序列; [break]; //可选,执行到这里结束switch } case 值2:case 值3:{ //匹配到值2或3都会执行该语句块内的语句 语句序列; [break]; } default:{ 语句序列; [break]; } } // 例子 public static void main(String[] args) { int month = (int)(1+12*Math.random()); //1-12的随机数代表月份 System.out.println("输出的月份:" + month); // 由case开始,到break结束 switch(month) { //switch判断month case 1:{ //如果month为1,则输出一月份 System.out.println("当前月份:" + "一月份"); break; //执行到这里结束 } case 2:case 3:{ System.out.println("当前月份:" + "二到三月份"); break; } case 4:case 5:{ System.out.println("当前月份:" + "四到五月份"); break; } case 6:case 7:{ System.out.println("当前月份:" + "六到七月份"); break; } default:{ //如果以上case没有符合的值,则输出default内的语句块 System.out.println("当前月份:" + "其他月份"); break; } } }
- switch多选择结构:switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任何case值不匹配,则进入default语句(如果存在default语句的情况),如果default不存在则跳过,执行下面的语句。