零基础学Java(第5版)
上QQ阅读APP看书,第一时间看更新

4.2 条件语句

在现实生活中,经常听人说:如果某人发财了,某人就会做什么。其实这就是程序设计中所说的条件语句。例如“如果……就……”“否则……”,当然这只是很简单的条件语句,在真正的程序设计中,使用的条件语句要比这复杂得多。

4.2.1 简单条件语句

在程序设计中,条件语句的标准格式如下:

if(条件)
{
   目的一;
}
else
{
  目的二;
}

【实例4-3】掌握格式后,先看一个简单的程序段。

01        public class Control {                                                            //定义一个Control类
02                public static void main(String[] args) {                                   //主方法
03                        int a = 20;                                                        //定义整型变量a并赋值
04                        int b = 30;                                                        //定义整型变量b并赋值
05                        if (a > b) {                                                    //将整型变量a,b的大小比较得出的布尔型变量作为条件语句的条件
06                                System.out.println("很幸运!");
07                        } else {
08                                System.out.println("很开心");
09                        }
10                }
11        }

【代码说明】因为“a=20”而“b=30”,所以“a<b”。在条件语句中,程序代码的意思是,如果“a>b”,就输出“很幸运!”,如果“a<b”,就输出“很开心”,所以程序的输出结果就是“很开心!”。

【运行效果】

很开心!

注意 条件表达式是一个关系表达式,其结果是布尔型数据。换句话解释上面的程序段:如果“a>b”是真,就输出“很幸运!”,否则输出“很开心!”。

4.2.2 最简单的条件语句

在条件语句的程序设计中,有一种最简单的条件语句,如下所示:

if(条件)
        目的;

如果有很多的目的,也可以采取下面的形式:

if(条件)
{
    目的一;
    目的二;
    目的三;
    目的四;
}

【实例4-4】下面看一个有关这种类型条件语句的例子。

01        public class Control1                                            //定义一个Control1类
02        {
03            public static void main(String[] args)                       //主方法
04            {
05                int salary=10000;                                        //定义整型变量salary并赋值
06                if (salary>500)                                       //条件判断
07                {
08                    System.out.println("想请吃饭!");
09                    System.out.println("想请唱歌!");
10                    System.out.println("想请喝酒!");
11                }   
12                
13            }
14        }

【代码说明】条件语句中判断“salary>500”是否为真,如果是真就输出“想请吃饭!想请唱歌!想请喝酒!”,如果是假,就什么都不做。在程序中“salary=10000”,满足“salary>500”,条件为真,所以输出以上三句话。

【运行效果】

想请吃饭!
想请唱歌!
想请喝酒!

注意 在有多个目的的程序段中,一般按顺序执行,即先执行目的一,再执行目的二,最后执行目的三,依次执行。

4.2.3 适应多条件的条件语句

如果出现多种不同的条件,应该如何处理呢?可以使用条件语句中的复杂型,其结构如下:

if (条件1)
{
    目的1;
}
else if (条件2)
{
    目的2;
}
else if (条件3)
{
    目的4;
}
else
{
    不满足以上所有条件,如何办;
}

【实例4-5】根据以上结构,学习有关这种复杂条件语句的实例,代码如下所示:

01        public class Control2 {                                                //定义一个Control2类
02                public static void main(String[] args) {                       //主方法
03                        int achievement = 85;                                  //定义整型变量achievement并赋值
04                        //当achievement等于100,就奖励一台笔记本电脑
05                        if (achievement == 100) {
06                                System.out.println("奖励一台笔记本电脑");
07                        } else if ((achievement >= 90) && (achievement < 100)) {
08                                //当achievement大于90小于100,就奖励一个MP4
09                                System.out.println("奖励一个MP4");
10                        } else if ((achievement >= 80) && (achievement < 90)) {
11                                //当achievement大于80小于90,就奖励一块网卡
12                                System.out.println("奖励一块网卡");
13                        } else if ((achievement >= 60) && (achievement < 80)) {
14                                //当achievement大于60小于80,不给予奖励
15                                System.out.println("不给予任何奖励");
16                        } else {
17                                //当achievement小于60,放假回学校补习
18                                System.out.println("放假回学校补习");
19                        }
20                }
21        } 

【代码说明】从上述代码可以看出,当有多个不同的条件存在时,处理的结果就不一样。成绩在大于80分小于90分之内,就可以奖励一块网卡;而成绩大于90分小于100分,则奖励一个MP4。在此程序中,初始成绩是85分,所以处理的结果就是奖励一块网卡。

【运行效果】

奖励一块网卡

条件语句已经基本介绍完毕,很重要的一点就是,在程序设计的时候,思路一定要清晰,如何才能有很清晰的思路呢?那就是绘制流程图。流程图就是:在程序开发前,为了能够使思路更加清晰,而将整个程序执行的顺序流程绘制出来。图4-1为一个有关条件语句的通用流程图。

图4-1 if条件语句流程图

将上面的程序段作为一个实例,绘制其基本的流程图,如图4-2所示。鉴于页面的版面,这里只给出了4种条件,并没有完全体现出上面案例的5种条件,读者可自己画一个完整的流程图。

图4-2 实例4-5的条件流程图

针对最复杂的条件语句,在程序设计中,有一种分支语句可以代替复杂条件语句。在实际程序开发过程中,使用条件语句类型比较多的是标准型,而复杂型的一般用分支语句来代替。当然也可以使用复杂型的条件语句。为了与实战结合,下面以一个稍微复杂的程序段为例。

【实例4-6】条件:设计一个程序,用于计算语文(90)、英语(75)、数学(90)、艺术(85)四门功课的平均分,并对此学生进行评价。

在编写程序之前要先绘制流程图,这样编程的思路就会非常清晰,本例流程图如图4-3所示。

图4-3 实例4-6的条件流程图

根据以上的流程图编写程序,程序代码段如下:

01        public class Control3 {                                 //定义一个Control3类
02                public static void main(String[] args) {        //主方法
03                        //创建成员变量
04                        int Chinese = 90;
05                        int English = 75;
06                        int Math = 90;
07                        int Art = 85;
08                        //获取平均值
09                        double Avg = (Chinese + English + Math + Art) / 4;
10                        if ((Avg > 90) && (Avg <= 100)) {
11                                //如果是大于90小于等于100则是优秀
12                                System.out.println("这个学生的所有功课的平均分是:" + Avg);
13                                System.out.println("这个学生的成绩应得A,是优秀");
14                        } else if ((Avg > 80) && (Avg <= 90)) {
15                                //如果是大于80小于等于90则是良好
16                                System.out.println("这个学生的所有功课的平均分是:" + Avg);
17                                System.out.println("这个学生的成绩应得B,是良好");
18                        } else if ((Avg > 70) && (Avg <= 80)) {
19                                //如果是大于70小于等于80则是良
20                                System.out.println("这个学生的所有功课的平均分是:" + Avg);
21                                System.out.println("这个学生的成绩应得C,是良");
22                        } else if ((Avg > 60) && (Avg <= 70)) {
23                                //如果是大于60小于等于70则是合格
24                                System.out.println("这个学生的所有功课的平均分是:" + Avg);
25                                System.out.println("这个学生的成绩应得D,是合格");
26                        } else {
27                                //如果小于60则是不合格
28                                System.out.println("这个学生的所有功课的平均分是:" + Avg);
29                                System.out.println("这个学生的成绩应得E,是不合格");
30                        }
31                }
32        }

【代码说明】第10~32行是复杂型的条件语句,判断了5种情况下不同的输出结果。第9行定义的是double变量,表示计算后的平均值。

【运行效果】

这个学生的所有功课的平均分是:85.0
这个学生的成绩应得B,是良好

4.2.4 嵌套条件语句

if嵌套语句也是经常使用的多分支判断语句,在一次判断之后又有新一层的判断,接着又有一层判断,逐渐深入,达到实现复杂判断的目的,这种多层次判断相当于多条件判断,在满足几个条件后再执行适当的语句。if嵌套语句的格式是:

if(条件1)
        if(条件2)
                if(条件3)
                        执行语句1;

在if(条件1)成立的情况下继续判断直到if(条件3)也成立,再执行语句1。如果其中有一个条件不满足,则跳出该if嵌套语句,继续执行嵌套语句之外的代码。

4.2.5 如何使用条件语句

使用条件语句需要注意以下几点。

1)应该绘制流程图,使编程时的思路更加清晰。

2)编程时,在最简单形式的条件语句中,可以不使用大括号,因为它不会产生混淆。但建议无论是哪种形式的条件语句,都应该使用大括号。