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