if选择结构

1.为什么需要if选择结构

在生活中我们基础需要做判断,然后才能决定是否做某一件事情。例如,如果妈妈今天过生日,你将送给妈妈一份礼物;如果地球上没有水,人类将濒临。

现在用java程序解决下面的问题。

问题:

如果张浩的java考试成绩大于98分,那么张浩就能获得一个MP4作为奖励。

分析:

需要判断条件,条件满足则输出,条件不满足则不输出。这个问题就需要先判断张浩的java成绩,他的java成绩大于98分时,才有奖励。对于这种 ‘’需要先判断条件,条件满足后执行‘’的程序,需要使用if结构来实现。s

2.什么是if选择结构

if选择结构是根据条件判断之后再做处理的一种语言结构。下面看一下最基本的if选择结构的语法。

语法:

if(条件){

代码块 //条件成立后要执行的代码,可以是一条语句,也可以是一组语句

}

下面看一看如下程序如何执行。

publice class Demo{
    public static void main(String[] args){
        //语句1;
        //语句2;
        if(条件){
            //语句3;
        }
        //语句4;
    }
}

main()是程序的入口,main()中执行的语句将逐条顺序地执行,所有的语句都执行完毕后程序结束。因此,程序开始执行后,首先执行语句1和语句2,然后对条件进行判断。如果条件成立,则运行语句3,然后跳出if结构块执行语句4;如果不成立,则语句3不执行,直接程序语句4。

经验:

当if关键字后的一对大括号里面只有一个语句时,可以省略大括号。但是完了避免有多个语句时遗忘大括号,以及保持程序整体的风格一致,建议不要省略if结构块的大括号。

2.如何使用if选择结构

1. 使用基本的if选择结构

使用基本的if选择结构解决,如果张浩的java考试成绩大于98分,那么张浩就能获得一个MP4作为奖励的问题,代码如示列1所示。

示列1:

import java.util.Scanner;

public class GetPrize {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //提示输入成绩
        System.out.println("输入张浩的成绩:");
        //从控制台获取张浩的java成绩
        int score = input.nextInt();
        //判断是否大于98分
        if (score > 98){
            System.out.println("老师说:不错,奖励一个MP4!");
        }
    }
}

程序运行结果如下:

这里输出张浩成绩后,通过判断得知是否大于98分,如果大于98分,则会输出"老师说:不错,奖励一个MP4!"。否则,不会输出这一句话。通过这个简单的例子,可以体会到if选择结构先判断后执行的方式。

2. 使用复杂条件下的if选择结构

问题:

如果张浩的java成绩大于98分且音乐成绩大于80分,老师则奖励他;或者 java成绩等于100分,音乐成绩等于70分,老师也可以奖励他。

分析:

这个问题需要的判断条件比较多,因此需要将多个条件连接起来,java中可以使用逻辑运算符连接多个条件。

常用的逻辑运算符如下:


现在考虑一下怎么连接问题中的条件,首先抽取问题中的条件。

​ 张浩java成绩 == 98 并且 张浩音乐成绩 > 80分

或者

​ 张浩java成绩 == 100 并且 张浩音乐成绩 > 70分

提取出了条件,是否可以这样编写条件呢?

第一种写法:

scorel > 98 && score2 > 80 || score1 == 100 && score2 > 70

第二种写法:

(score1 > 98 && score2 > 80) || (scorel == 100 && score2 > 70)

其中,score1 表示张浩的java成绩,score2 表示张浩的音乐成绩。

显然是第二种写法更清晰描述了上述问题的条件。

经验:

当运算符比较多,无法确定运算符执行的顺序时,可以使用小括号控制。

上述问题的完整代码如示列2所示。

示列2:

public class GetPrize2 {
    public static void main(String[] args) {
        //张浩的java成绩
        int score1 = 100;
        //张浩的音乐成绩
        int score2 = 72;
        if ((score1 > 98 && score2 > 80)||(score1 == 100 && score2 > 70)){
            System.out.println("老师说:不错,奖励一个MP4");
        }
    }
}

程序运行结果如下:

3.使用if-else选择结构

问题:

如果张浩的java成绩大于98分,那么老师奖励他一个MP4;否则老师惩罚他抄代码。

分析:

与上面的if选择结构不同的是,除了要实现条件成立执行的执行操作以外,还要实现条件不成立时执行的操作。

当然,这个问题可以使用两个if选择结构来实现,如示列3所示。

示列3:

publice class SimpleIf{
    publice static void main(String[] args){
        //张浩的java成绩
        int score = 91;
        if(score > 98){
            System.out.println("老师说:不错,奖励一个MP4!")
        }
        if(score <= 98){
            System.out.println("老师说:惩罚你抄代码!")
        }
    }
}

使用两个if选择结构看起来很繁琐,实际上有一个语法结构可以更好地解决这个问题,结束if-else选择结构,表示 "如果xx,就xx;否则,就xx"。这看起来很像小学时候的造句。使用java程序语言的过程,就是造句的过程,只是不是用汉语造句,而是用java语言造句。

if-else选择结构的语法如下。

if(条件){

//代码块1

}else{

//代码块2

}

使用if-else选择结构进行编程。改写代码3中的代码。

示列4:

public class SimpleIf2 {
    public static void main(String[] args) {
        //张浩的java成绩
        int score = 90;
        if (score > 98){
            System.out.println("老师说:不错,奖励一个MP4!");
        }else{
            System.out.println("老师说:惩罚你抄代码!");
        }
    }
}

程序运行结果如下

小结:基本的if选择结构,只有一个if块;if-else选择结构,有if块和else块。

3.多重if选择结构循环

问题:

对学员的结业考试成绩进行测评。

分析:

这个问题是要将成绩分成几个区间进行判断

0-60
60-80中等
80-100良好

分析完这个问题后,我们可以确定使用单个if选择结构无法完成。那么可以使用多个if选择结构来实现。但是条件写起来也很麻烦。java中还有一种if选择结构的形式:多重if选择结构。多重if选择结构在解决需要判断的条件是连续的区间时有很大的优势。

多重if选择结构不是多个基本if选择结构简单地排列在以前,它的语法具体如下。

语法:

if(条件 1){

//代码块 1

}else if (条件){

//代码块 2

}else{

//代码块 3

}

多重if选择结构到底是如何执行的呢?首先,程序判断条件1,如果成立,则执行代码块1,然后直接跳出这个多重循环if选择结构,执行它后面的代码。这种情况下,代码块2和代码块3都不会被执行。如果条件1不成立,则判断条件2。如果条件2成立,则执行代码块2,然后跳出这个多重循环,执行它后面的代码。这种情况下,代码块1和代码块3不会被执行。如果条件2也不成立,则代码块1和代码块2都不执行,直接执行代码块3。

注意:其中,else if 块最多有一个或没有,else块必须要放在else if 块之后。

既然知道了多重if选择的语法结构,那么应该如何使用多重if选择结构来解决这个问题呢?完整代码如示列5所示。

示列5:

public class ScoreAssess {
    public static void main(String[] args) {
        //考试成绩
        int score = 70;
//            考试成绩大于或等于80的if判断
        if (score >= 80) {
            System.out.println("良好");
//            考试成绩大于或等于60的判断
        } else if (score >= 60) {
            System.out.println("中等");
//            考试成绩小于60
        }else{
            System.out.println("差");
        }
    }
}
程序运行结果如下:

if选择结构-示列5-效果图

观察这段代码,结合else if 块执行的顺序可以看出,else if块的顺序是连续的,而不是跳跃的。

问题:

小明想买车,买什么车决定于小明在银行有多少存款。

如果小明的存款超过500万,则买凯迪拉克;

否则,如果小明的存款超过100万,则买帕萨特;

否则,如果小明的存款超过50万,则买伊兰特;

否则,如果小明的存款超过10万,则买奥拓;

否则,小明买捷安特。

示列6:

public class BuyCar{
    public static void main(String[] args){
        //小明的存款,单位万元
        int money = 50;
        if(money >= 500){
            System.out.println("太好了,我可以买辆凯迪拉克");  
        }else if(money >= 100){
            System.out.println("不错,我可以买辆帕萨特");
        }else if(money >= 50){
            System.out.println("我可以买辆伊兰特");
        }else if(money >= 10){
            Systemo.out.println("至少我可以买辆奥拓");
        }else{
            Systemo.out.println("看来,我只能买一辆捷安特了");
        }
    }
}

注意:

如果多重if选择结构中的所有条件之间只是简单的互斥,不存在连续的问题,则条件没有顺序要求。例如,判断一个人的国籍是中国、美国、英国、法国、俄国或其他。

4.嵌套if选择结构

问题:

学校举行运动会,百米赛跑成绩在10秒以内的学生有资格进决赛,根据性别分为男子组,还是进入女子组。

分析:

首先,要判断是否能够进入决赛,在确定进入决赛的情况下,再判断是进入男子组,还是进入女子组,这就需要使用嵌套if选择结构来解决。

语法:

if(条件1){

if(条件2){

//代码块1

}else{

//代码块2

}else{

//代码块3

}

}

现在就使用嵌套if结构来解决这个问题。代码如示列7所示。

示列7:

import java.util.Scanner;

public class RunningMatch {
    public static void main(String[] args) {
        //获取输入信息的工具
        Scanner input = new Scanner(System.in);
        //提示用户输入成绩
        System.out.println("请输入比赛成绩:");
        //输入的成绩用double类型来存储
        double score = input.nextInt();
        //提示用户输入成绩
        System.out.println("请输入性别:");
        //输入的成绩用String类型来存储
        String gender = input.next();
        //如果成绩大于10或者等于10进入循环 否则输出淘汰
        if (score <= 10) {
            //如果gender性别 收到的信息是男 进入循环
            if (gender.equals("男")) {
                System.out.println("进入男子组决赛!");
                //如果gender性别 收到的信息是女 进入循环
            } else if (gender.equals("女")) {
                System.out.println("进入女子组决赛!");
            }
        } else {
            System.out.println("淘汰");
        }
    }
}
程序运行结果如图:

注意:

  • 只有当满足了外层的if选择结构的条件时,才会判断内层if的条件
  • else 总是与它前面最近的那个缺少 else 的 if 配对

if结构书法规范如下

  • 为了使if选择结构更加清晰,应该把每一个if或者else包含的代码块用大括号括起来。
  • 相配对的一对if和else应该左对齐。
  • 内层的if结构相对于外层的if选择结构要有一定的缩进。

总结:

  • 基本的if选择结构:可以处理单一或组合条件的情况。
  • if-else 选择结构:可以处理简单的条件分支情况。
  • 多重if选择结构:可以处理连续区间的条件分支情况。
  • 嵌套if选择结构:可以处理复杂的条件分支情况。
最后修改:2021 年 11 月 26 日
如果觉得我的文章对你有用,请随意赞赏