4.2 条件语句
在现实生活中,经常听人说:如果某人发财了,某人就会做什么。其实这就是程序设计中所说的条件语句。像“如果⋯”、“就⋯”、“否则⋯”,当然这只是很简单的条件语句,在真正的程序设计中,使用的条件语句要比这复杂得多。
4.2.1 条件语句的种类
在程序设计中,条件语句的标准格式如下:
01 if(条件) 02 { 03 目的一; 04 } 05 else 06 { 07 目的二; 08 }
【实例4.3】掌握格式后,先看一个简单的程序段。
01 ///将整型变量a,b的大小比较得出的布尔型变量作为条件语句的条件 02 ///通过条件语句来得出不同的输出结果 03 public class control 04 { 05 public static void main(String[] args) 06 { 07 int a=20;08 int b=30; 09 if (a>b) 10 { 11 System.out.println("很幸运"); 12 } 13 else 14 { 15 System.out.println("很开心"); 16 } 17 } 18 }
【代码说明】因为“a=20”而“b=30”,所以“a<b”。在条件语句中,程序代码的意思是,如果“a>b”,就输出“很幸运”,如果“a<b”,就输出“很开心”,所以程序的输出就是“很开心”。
【运行效果】
很开心
注意
条件表达式是一个关系表达式,其结果是布尔型数据。换句话解释上面的程序段:如果“a>b”是真,就输出“很幸运”,否则输出“很开心”。
在条件语句的程序设计中,有一种最简单的条件语句,如下所示:
01 if(条件) 02 目的;
如果有很多的目的,也可以采取下列的形式:
01 if(条件) 02 { 03 目的一; 04 目的二; 05 目的三; 06 目的四; 07 }
【实例4.4】下面看一个有关这种类型的条件语句的例子。
01 public class control1 02 { 03 public static void main(String[] args) 04 { 05 int salary=10000; 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”,条件为真,所以输出以上的三句话。
【运行效果】
想请吃饭! 想请唱歌! 想请喝酒!
注意
在多个目的的程序段中,一般按顺序执行,即先目的一,再目的二,再目的三,依次执行下去。
如果出现多种不同的条件,应该如何处理呢?可以使用条件语句中的复杂型,其结构如下:
01 if (条件1) 02 { 03 目的1; 04 } 05 else if (条件2) 06 { 07 目的2; 08 } 09 else if (条件3) 10 { 11 目的3; 12 } 13 else 14 { 15 不满足以上所有条件,如何办; 16 }
【实例4.5】根据以上的结构,学习有关这种复杂条件语句的实例,代码如下所示。
01 ///当achievement等于100,就奖励一台笔记本电脑 02 ///当achievement大于90小于100,就奖励一个MP4 03 ///当achievement大于80小于90,就奖励一块网卡 04 ///当achievement大于60小于80,不给予奖励 05 ///当achievement小于60,放假回学校补习 06 public class control2 07 { 08 public static void main(String[] args) 09 { 10 int achievement=85; 11 if(achievement==100) 12 { 13 System.out.println("奖励一台笔记本电脑"); 14 } 15 else if((achievement>=90)&&(achievement<100)) 16 { 17 System.out.println("奖励一个MP4"); 18 } 19 else if((achievement>=80)&&(achievement<90)) 20 { 21 System.out.println("奖励一块网卡"); 22 } 23 else if((achievement>=60)&&(achievement<80)) 24 { 25 System.out.println("不给予任何奖励"); 26 } 27 else 28 { 29 System.out.println("放假到学校补习"); 30 } 31 } 32 }
【代码说明】上述代码可以看出,当有多个不同的条件存在时,处理的结果就不一样。成绩在大于80小于90分之内,就可以奖励一块网卡,而成绩大于90小于100分,则奖励一个MP4。在此程序中,开始成绩是85分,所以处理的结果就是奖励一块网卡。
【运行效果】
奖励一块网卡
图4.1 条件语句流程图
条件语句已经基本介绍完毕,很重要的一点就是,在程序设计的时候,思路一定要清晰,如何才能有很清晰的思路呢?那就是绘制流程图。流程图就是:在程序开发前,为了能够思路更加清晰,而将整个程序执行的顺序流程绘制出来。图4.1为一个有关条件语句的通用流程图。
将上面的程序段作为一个实例,绘制其基本的流程图,如图4.2所示。鉴于页面的版面,这里只给出了4种条件,并没有完全体现出上面案例的5种条件,读者可自己画一个完整的流程图。
图4.2 一个实例的条件流程图
针对最复杂的条件语句,在程序设计中,有一种分支语句可以代替复杂条件语句。在实际程序开发过程中,使用条件语句类型比较多的是标准型,而复杂型的一般用分支语句来代替。当然也可以使用复杂型的条件语句。为了与实战结合,下面看一个稍微复杂的程序段。
【实例4.6】条件:设计一个程序,用于计算语文(90)、英语(75)、数学(90)、艺术(85)四门功课的平均分,并对此学生进行评价。
在编写程序之前要先绘制流程图,这样编程的思路就会非常清晰,本例流程如图4.3所示。
根据以上的流程图,开始编写程序,程序代码段如下。
01 ///通过计算学生的平均分Avg,得出这个学生的等级 02 ///如果是大于90小于或等于100则是优秀 03 ///如果是大于80小于或等于90则是良好 04 ///如果是大于70小于或等于80则是良 05 ///如果是大于60小于或等于70则是合格 06 ///如果小于或等于60则是不合格 07 public class control3 08 { 09 public static void main(String[] args) 10 { 11 int Chinese=90; 12 int English=75; 13 int Math=90; 14 int Art=85; 15 double Avg=(Chinese+English+Math+Art)/4; 16 if((Avg>90)&&(Avg<=100)) 17 { 18 System.out.println("这个学生的所有功课的平均分是:"+Avg); 19 System.out.println("这个学生的成绩应得A,是优秀"); 20 } 21 else if((Avg>80)&&(Avg<=90)) 22 { 23 System.out.println("这个学生的所有功课的平均分是:"+Avg); 24 System.out.println("这个学生的成绩应得B,是良好"); 25 } 26 else if((Avg>70)&&(Avg<=80)) 27 { 28 System.out.println("这个学生的所有功课的平均分是:"+Avg); 29 System.out.println("这个学生的成绩应得C,是良"); 30 } 31 else if((Avg>60)&&(Avg<=70)) 32 { 33 System.out.println("这个学生的所有功课的平均分是:"+Avg); 34 System.out.println("这个学生的成绩应得D,是合格"); 35 } 36 else 37 { 38 System.out.println("这个学生的所有功课的平均分是:"+Avg); 39 System.out.println("这个学生的成绩应得E,是不合格"); 40 } 41 } 42 }
图4.3 成绩代码条件流程图
【代码说明】第16~40行是复杂型的条件语句,判断了5种情况下不同的输出结果。第15行定义的是double变量,表示计算后的平均值。
【运行效果】
这个学生的所有功课的平均分是:85.0 这个学生的成绩应得B,是良好
4.2.2 如何使用好条件语句
使用好条件语句需要注意以下几点:
(1)应该绘制流程图,使编程时思路更加清晰。
(2)编程时,在最简单形式的条件语句中,可以不使用大括号,因为它不会产生混淆,但建议无论哪种形式的条件语句,都应该使用大括号。