Java选择结构(if、switch)

我们有时会面临人生的分岔路口,生活中也会有许多大大小小的选择。

程序也是为了提高人们生活质量的,不可能脱离实际生活,所以Java程序中也必须得实现选择结构。

当我们的代码按照书写顺序一句一句执行的时候,此时则为顺序结构。像我们书写的多条输出语句,会一句一句从上到下的按照顺序执行。

选择结构是在具备某种条件下就做什么选择,在我们生活中也频繁使用:如果我考了100分,我妈妈就会给我奖励;如果今天不下雨,我就去公园玩......没错,Java就是使用如果,即if

1.if

单if语句

语法:if(条件:布尔类型的数据,可以是表达式,也可以用逻辑运算符){ //如果条件为 true,执行语句 };

注意:if(a!=0)和if(a)是等价的

流程图:

如果我考试考了100分,那么妈妈就会给我奖励一个玩具

package com.dh.control;

public class IfDemo01 {
    public static void main(String[] args) {
       //if
        int score = 100;
        if(score == 100){
            System.out.println("太棒啦!奖励一个小汽车!");
        }
    }
}

if...else语句

语法::if(条件表达式){ //满足条件执行的语句 } else { //不满足条件的执行语句 } ;

流程图:

如果我考试考了100分,那么妈妈就会给我奖励一个玩具,否则,就没有奖励了

package com.dh.control;

public class IfDemo01 {
    public static void main(String[] args) {
        //if...else
        int score = 99;
        if(score == 100){
            System.out.println("太棒啦!奖励一个小汽车!");
        }else{
            System.out.println("很遗憾,下次再接再厉!");
        }
    }
}

if...else if...else(else可选)

语法:if(条件表达式){ //满足条件 1 的执行语句 } else if(条件表达式){ //可以有多个 else if 块 //满足条件 2 的执行语句 } else { //不满足条件的执行语句 } ;

流程图:

99分都没有奖励的话,就太让人沮丧了,和妈妈重新商量了一下,妈妈承诺,如果我考试考了100分,给我奖励一个玩具,如果我考了90分以上,就给我奖励一个冰淇淋,否则,就没有奖励了

package com.dh.control;

public class IfDemo01 {
    public static void main(String[] args) {

        int score = 99;
        if(score == 100){
            System.out.println("太棒啦!奖励一个小汽车!");
        }else if(score>=90){
            System.out.println("干的不错!奖励一个冰淇淋");
        } else{
            System.out.println("很遗憾,下次再接再厉!");
        }
    }
}

注意:选择结构:判断条件符合条件则返回结果不再进行之后的条件判断,如果不符合条件,即继续判断条件,直到所有判断条件都不满足时最后一个为结果。*

package com.dh.control;

public class IfDemo02 {
    public static void main(String[] args) {
        int num = 3;
        if(num>1){
            System.out.println("3>1");
        }else if(num>2){
            System.out.println("3>2");
        }
    }
}

结果为输出3>1,尽管3>2也成立,但是由于3>1已经满足了条件,就会直接输出结果,不会再往下做判断了

if嵌套

语法:if(条件表达式){ if(条件表达式){ //满足条件时执行的语句 } }

妈妈答应,如果期末考,数学考了100,语文90分以上,就可以去游乐场玩,否则就不能去了

package com.dh.control;

public class IfDemo03 {

    public static void main(String[] args) {
        int math = 100;
        int chinese = 95;
        if(math == 100){
            if(chinese>90){
                System.out.println("假期去游乐场玩!");
            }
        }else{
            System.out.println("下次加油!");
        }
    }
}

//当然可以直接使用if(math==100 && chinese>90)一个判断,但是这里只是为if嵌套举例子

2.switch

选择结构除了if选择,还有一个switch选择

语法:

switch(数据:byte、short、int、char、字符串、枚举)

{

case 数据:{//执行语句}; break;

case 数据:{//执行语句}; break;

……

default:{//执行语句} break;

}

注意:

swtich只能做等值判断,即switch()里的数据与case后面的数据进行比较

break的作用:终止整个switch选择,若没有break的话会继续向下执行代码

流程图:

英语成绩呢,没有具体的分数,只有A-E五个等级,妈妈说,考A奖励一个玩具,考B奖励一个冰淇淋,考C什么都没有,考D的话就要每天多背五个单词,考E就要每天多背十个单词,其它缺考就要罚站了!

package com.dh.control;

public class SwitchDemo {

    public static void main(String[] args) {

        char score = 'B';
        switch (score){
            case 'A': {
                System.out.println("奖励一个小汽车!");
            }break;
            case 'B': {
                System.out.println("奖励一个冰淇淋!");
            }break;
            case 'C': {
                System.out.println("再接再厉!");
            }break;
            case 'D': {
                System.out.println("每天多背五个单词!");
            }break;
            case 'E': {
                System.out.println("每天多背十个单词!");
            }break;
            default:{
                System.out.println("罚站!");
            }break;
        }
    }
}

若去掉case B、C的break,就得碰到D的break语句才会退出,所以B、C和D的语句都会被执行

package com.dh.control;

public class SwitchDemo {

    public static void main(String[] args) {

        char score = 'B';
        switch (score){
            case 'A': {
                System.out.println("奖励一个小汽车!");
            }break;
                //去掉case B、C的break
            case 'B': {
                System.out.println("奖励一个冰淇淋!");
            }
            case 'C': {
                System.out.println("再接再厉!");
            }
            case 'D': {
                System.out.println("每天多背五个单词!");
            }break;
            case 'E': {
                System.out.println("每天多背十个单词!");
            }break;
            default:{
                System.out.println("罚站!");
            }break;
        }
    }
}

if和switch都为选择结构,所以一般情况下,用if结构的,可以转换为switch,用switch结构的,也可以转换为if,大多数情况下会使用if,比较灵活。

有错误请指出~

posted @ 2021-01-14 12:29  deng-hui  阅读(621)  评论(0编辑  收藏  举报