3.1、IF结构【重点】
为什么需要使用IF结构?我们同一个问题来阐述:
小明上学了,家长为了激励小明能够好好学习,取得优异的成绩,决定采用奖励制度来提升孩子的学习热情,孩子考试如果能够达到100分,那么就奖励一台IPAD游戏机。
我们接下来,就使用IF结构来解决该问题,代码如下:
public class Demo1 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入小明本次考试的成绩:"); int score=scanner.nextInt(); if(score==100) { System.out.println("奖励小明IPAD一台!"); } System.out.println("程序结束!"); } } |
在本案例中,问题的关键是,小明的成绩是否达到了奖励的条件,在编码中,条件表达式的最终结果决定了是否会执行进行奖励的语句块。
格式:
if (布尔表达式) { 语句块; } |
解释:以上代码中,if是关键字,括弧中的布尔表达式如果成立(值为true),那么就执行相应语句块,否则跳过语句块,执行后续的代码。
3.2、Debug调式【难点】
在之前的案例中,如果条件不成立,将不会执行相应的代码块,但是我们无法用肉眼观察到,如果想详细观察程序的运行流程,一般我们需要使用到Debug调试。
接下来,我们使用之前的案例进行Debug调试,步骤如下:
第一步:找到需要观察的第一条语句,并设置断点。
第二步:采用调试模式运行程序。
第三步:使用F6键单步执行,并观察程序的执行过程,最终发现,程序在不满足条件的情况下,跳过了if结构的语句块,调试完毕。
3.3、IF ELSE 结构【重点】
小明爸爸,采用之前的奖励方案后,发现孩子并没有获得过奖励,原因是奖励的条件难以达成,孩子的积极性并没有提升,所以决定改良奖励方案:
如果小明考试的成绩达到了90分以上,就奖励IPAD一台,但是如果没有达到90分,要进行处罚,处罚小明面壁思过1小时。
由于奖励方案的变化,需要我们使用新的IF ELSE结构来时实现,代码如下:
public class Demo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入小明的考试成绩:"); int score = scanner.nextInt(); if (score >= 90) { // 如果条件成立,执行此处代码块 System.out.println("奖励小明IPAD一台!"); } else { // 如果条件不成立,执行此处代码块 System.out.println("处罚小明面壁思过一小时!"); } } } |
格式:
if (布尔表达式) { 语句块1; } else{ 语句块2; } |
解释:如果条件表达式的值为true,那么就执行语句块1,否则执行语句块2。
3.4、IF ELSE IF … ELSE结构【重点】
小明爸爸,采用之前的改良的奖励方案后,发现孩子的积极性有限,但是效果不是十分显著,所以决定再次改良奖励方案,采用阶梯式奖惩方案:
如果小明考试的成绩达到了100分,就奖励IPAD一台;
如果小明考试的成绩达到了90分以上,就奖励小霸王游戏机一台;
如果小明的成绩达到了80分以上,就奖励KFC大餐一顿;
如果小明的成绩是60以上,不做任何奖励,给于批评教育;
如果小明的成绩是60分以下,处罚小明“木棍炒肉片”一顿。
由于奖励方案的变化,需要我们使用新的IF ELSE IF… ELSE结构来时实现,代码如下:
public class Demo3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入小明本次考试的成绩:"); int score = scanner.nextInt(); if (score == 100) { System.out.println("奖励小明IPAD一台!"); } else if (score >= 90) { System.out.println("奖励小明小霸王游戏机一台!"); } else if (score >= 80) { System.out.println("奖励小明KFC大餐一顿!"); } else if (score >= 60) { System.out.println("成绩不理想,批评教育,还需加油!"); } else { System.out.println("不及格,处罚小明“木棍炒肉片”一顿!"); } //红色代码部分可以替换成如下代码,执行效果相同 else if (score<50) { System.out.println("不及格,处罚小明“木棍炒肉片”一顿!"); } } } |
格式:
<if (布尔表达式1) { 语句块1; }> [ else if (布尔表达式2) { 语句块2; }] [ else if (布尔表达式...) { 语句块...; }] [ else if (布尔表达式N) { 语句块N; }] [ else { 语句块N+1; } ] |
解释:
如果IF语句块的布尔表达式的值为true,那么就执行对应的语句块,后续ELSE IF语句块和ELSE语句块将忽略执行;
如果IF语句块的条件表达式的值为false,那么就执行后续的ELSE IF语句块,后续ELSE IF语句块和ELSE语句块将忽略执行;
如果所有条件表达式的值都为false,那么执行else部分。