选择结构(if-else/swtich)

  • 逻辑:如果…,则…。

  • 分为:if单选择、if-else双选、if-else if-else多选、switch多选。

  • 注意:if(flag){}等同于if(flag==true){},不管flag的值是true还是false。

if单选择结构

格式:

if(布尔表达式){
  语句块
}

示例:

package com.itcode.demo1;  

/**      
 * @author: 成都码到功成学员  
 * @Description:  
 * 抛骰子游戏 
 */  
public class TestIf {  

    public static void main(String[] args) {    

         System.out.println(Math.random());// 产生一个范围在(0,1)之间的double  
         System.out.println((int)(Math.random()*6 + 1));// 产生一个范围在(0,6)  
         int a = (int) (Math.random()*6+1);    
         int b = (int) (Math.random()*6+1);    
         int c = (int) (Math.random()*6+1);    
         int d = a + b + c;    
         System.out.println(d);    
         if(d <= 5) {    
             System.out.println("手气差");    
         }    
         if(d>5 && d<11) {    
             System.out.println("手气一般");    
         }    
         if(d >= 11) {    
             System.out.println("手气还可以");    
         }    
     }  
}

建议:

if语句不写{},作用域为后面的第一条语句。 强烈建议任何时候都加上{}。

if-else双选

格式:

if(布尔表达式){
 语句块1
}else{
  语句块2
}

布尔表达式为真执行语句块1,反之执行语句块2。

示例:

package com.itcode.demo1;  
  /**      
 * @author: 成都码到功成学员  
 * @Description:  
 * 随机产生一个[0.0, 4.0)区间的半径,并求圆的面积和周长 
 */

public class TestControl2 {  

    public static void main(String[] args) {  

        Double radius = Math.random() * 4;  
        // 面积 Math.PI 3.14   
        Double area = Math.PI * Math.pow(radius , 2);  
        // 周长   
        Double perimeter = Math.PI * radius *2;  

        // 输出半径周长面积  
        System.out.println("半径:" + radius);  
        System.out.println("周长:" + perimeter);  
        System.out.println("面积:" + area);  

        if (perimeter >= area) {  
            System.out.println("周长大于等于面积");  
        } else {  
            System.out.println("周长小于面积");  
        }  
        // 使用条件元素符  
        System.out.println((perimeter >= area ? "周长大于等于面积":"周长小于面积"));  
    }  
}

效果:

if-else if-else多选

格式:

if(布尔表达式1){
        语句块1
}else if(布尔表达式2){
       语句块2
}……
else if(布尔表达式n){
       语句块n
}else{
       语句块n+1
}

按照顺序从上往下挨着去和布尔表达式1……布尔表达式n一一判断,判断到哪个表达式为true就执行相应语句块。如果一直判断到布尔表达式都为false,那就执行else里的语句块n+1。

示例:

package com.itcode.demo1;  

/**      
 * @author: 成都码到功成学员  
 * @Description:  
 * 需求:if-else if-else练习,随机生成100以内的成绩并做判断。 
 */  
public class TestControl2 {  

    public static void main(String[] args) {  

        int result = (int) (Math.random()*100);  

        System.out.println(result);  
        if (result > 80) {  
            System.out.println("优秀");  
        } else if (result > 60) {  
            System.out.println("及格");  
        } else if (result > 40) {  
            System.out.println("不及格");  
        } else if (result > 20) {  
            System.out.println("极差");  
        } else {  
            System.out.println("等死吧!没救了!");  
        }  

    }  
}

switch多选

难点,重点攻克。

格式:

switch (表达式) {
    case 值1:
        语句 1;
        break;
    case 值2:
        语句 2;
        break;    
    …… ……
    case 值n:
        语句n;
        break;
    default:
        语句
        break;
}

switch (表达式) {
    case 值1:
    case 值 2:
    Case 值 3:
        语句 1;
        break;
    …… ……
    default:
        语句
        break;
}

流程图

    1. 根据表达式的值从匹配的case标签出开始执行,遇到break返回或者一直执行到switch末尾。如果无任何case标签可匹配则进入的default语句(有才进入)。default语句(也可以放到前面,但可能影响效果)可以没有。break结束switch语句。

    1. case标签的值范围:byte、short、int、char、String(JDK1.7以后)、枚举常量、Byte、Short、Integer、Character

    1. 等值/多值判断适合用switch,但是使用if-else if-else多选结构可以完全代替。Switch效率比if-else if-else高。

    1. case标签的值唯一(只能是常量),不能有多个case标签值一样。case标签值类型可以不同。

示例:

package com.itcode.demo1;  

/**      
 * @author: 成都码到功成学员  
 * @Description:  
 * 需求:switch case判断 
 */  
public class TestControl4 {  

    public static void main(String[] args) {  

        int x = (int) (Math.random()*26);  
        char c = (char) ('b' + x);  
        System.out.println(c);  
        switch (c) {  
        case 'a':  
        case 'i':  
        case 'o':  
        case 'u':  
        case 'e':  
        case 1:  
            System.out.println("元音");  
            break;  
        case 'y':  
        case 'w':  
            System.out.println("半元音");  
            break;  
        default:  
            System.out.println("辅音");  
            break;  
        }  

    }  
}

Last updated

Was this helpful?