Java之分支结构

一、if结构

1.1 基本if结构

语法:

if(条件){

// 代码块

}

注意:条件成立时会执行代码块,条件不成立时什么都不干。

public static void main(String[] args) {
    // 基本分支结构
    // if(条件)
    int age = 21;//定义年纪
    if(age > 22) {
        // 当条件成立时执行
        System.out.println("可以结婚了");
    }
}

1.2 if-else结构

语法:

if(条件){

// 条件成立时执行的代码块

}else{

// 条件不成立时执行的代码块

}

注意:分支结构两个分支只会执行其中一个,条件是决定因素。

public static void main(String[] args) {
    // if-else结构
    int num = 2;
    if(num > 1) {
        // 成立后执行的代码块
        System.out.println("一起开黑");
    }else {
        // 不成立后执行的代码块
        System.out.println("在家睡觉");
    }
}

1.3多重if结构

语法:

if(条件1){

// 条件1成立时执行的代码块

}else if(条件2){

// 条件2成立时执行的代码块

}else if(条件3){

// 条件3成立时执行的代码块

}else{ // 可以没有else

// 条件都不成立时执行的代码块

}

注意:条件可能满足多个,但是代码是自上而下执行,满足了一个条件,则不会去判断下面的其他条件。

public static void main(String[] args) {
    // if-else if-else结构
    String weather = "晴";
    if(weather.equals("雨")) {
        System.out.println("出门带伞");
    }else if(weather.equals("雪")) {
        System.out.println("出门带外套");
    }else if(weather.equals("晴")) {
        System.out.println("可以室外活动");
    }else {
        System.out.println("在家睡觉");
    }
​
    int position = 5;
    if(position > 1) {
        System.out.println("我是上单,出门多兰盾");
    }else if(position > 2) {
        System.out.println("我是中单,出门多兰戒");
    }else if(position > 3) {
        System.out.println("我是辅助,出门圣物之盾");
    }else if(position > 4) {
        System.out.println("我是ADC,出门多兰剑");
    }else {
        System.out.println("我是打野,出门打野刀");
    }
​
    // 条件不可能满足多个,所以判断的顺序可以交换
    int score = 82;
    if(score == 100) {
        System.out.println("完美");
    }else if(score >= 90 && score < 100) {
        System.out.println("优秀");
    }else if(score >= 80 && score < 90) {
        System.out.println("良好");
    }else if(score >= 70 && score < 80) {
        System.out.println("一般");
    }else if(score >= 60 && score < 70) {
        System.out.println("及格");
    }else {
        System.out.println("不及格");
    }
​
    // 条件可能满足多个,需要注意顺序
    int score1 = 82;
    if(score1 == 100) {
        System.out.println("完美");
    }else if(score1 >= 90) {
        System.out.println("优秀");
    }else if(score1 >= 80) {
        System.out.println("良好");
    }else if(score1 >= 70) {
        System.out.println("一般");
    }else if(score1 >= 60) {
        System.out.println("及格");
    }else {
        System.out.println("不及格");
    }
}

1.4 嵌套if结构

先判断外层的条件,如果成立则执行外层条件的语句块,如果里面又包含分支,再判断相应的条件去执行对应的分支。

public static void main(String[] args) {
    // 
    String zhongzu = "人族";
    String zhiye = "法师";
    if(zhongzu.equals("精灵")) {
        System.out.println("你选择了精灵族");
        if(zhiye.equals("法师")) {
            System.out.println("你选择了精灵法师");
        }else {
            System.out.println("你选择了精灵射手");
        }
    }else {
        System.out.println("你选择了人族");
        if(zhiye.equals("狂战士")) {
            System.out.println("你选择了人族狂战士");
        }else {
            System.out.println("你选择了人族骑士");
        }
    }
}

二、switch结构

类似于if-elseif-else结构。

语法:

switch(变量或表达式){

case 值1:

代码块

break;

case 值2:

代码块

break;

case 值3:

代码块

break;

default:

break;

}

注意:

  1. switch里的变量只能是byte\short\int\char\String(jdk7新加入的)

  2. 如果在case中代码块结束后,不写break,会继续往下执行。

小技巧: 可以利用没有写break时继续往下执行的方式来处理一些需求。(例如:日期的处理)

// 定义三个变量,年份、月份和日期,输出该日期是一年的第几天(考虑闰年)
int month = 3;
int day = 20;
int year = 2000;
int days = 0;
switch(month) {
    case 12:
        days = days + 30; // 加上11月份的
    case 11:
        days = days + 31; // 加上10月份的
    case 10:
        days = days + 30; // 加上9月份的
    case 9: 
        days = days + 31; // 加上8月日期
    case 8:
        days = days + 31; // 加上7月份的
    case 7:
        days = days + 30; // 加上6月份的
    case 6:
        days = days + 31; // 加上5月份的
    case 5: 
        days = days + 30; // 加上4月日期
    case 4:
        days = days + 31; // 加上3月份的
    case 3:
        if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0) {
            days = days + 29; // 加上闰年2月份的
        }else {
            days = days + 28; // 加上平年2月份的
        }
    case 2:
        days = days + 31; // 加上1月份的
    case 1: 
        days = days + day; // 加上本月日期
}
System.out.println(year + "年" + month + "月" + day + "日是当年的第"+days+"天");

这个计算一年中第几天需要大家思考一下为什么是这样的,就是上一个月的天数过完了,才会挪到下一个月计算,没过完的话就是case 1中的天数

String day = "星期一";
switch(day) {
    case "星期一":
        System.out.println("吃面");
        break;
    case "星期二":
        System.out.println("吃饭");
        break;
    default:
        System.out.println("喝汤");
        break;
}

三、变量的作用域

变量的使用:

  1. 必须在有效的作用域范围内才能使用

  2. 必须先赋值后使用。(不能有条件赋值)

变量的作用域:

从变量定义开始,到离该变量定义最近的一个{相对应的}结束。

注意:同一个作用域中不能定义两个同名的变量。

你可能感兴趣的:(java)