3.选择结构
关键字 if
我们都知道代码是按照顺序执行的,那么一旦出现分支该如何处理呢?
比如说给学生成绩做评价:
成绩 >= 80分的,评价为良好
成绩 >= 60分的,评价为中等
成绩 < 60分,评价为差
运行的时候,代码出现了分支选择,需要根据特定的条件做出处理。
这时就到了 if 关键字出场啦。

来看一个简单的例子:
如果张三的Java课成绩 >= 90分,就奖励一台PS5。
System.out.println("请输入张三的Java课成绩:");
Scanner input = new Scanner(System.in);
int score = input.nextInt();
if (score >= 90) {
System.out.println("奖励一台PS5");
}

如果 if 中的条件判断很复杂,该如何使用呢?
比如:
如果张三的Java课成绩 >= 90分,并且音乐课成绩 > 80分时,或者Java课成绩 = 100分,音乐课成绩 > 70分时,奖励一台PS5。
判断的条件变得复杂了,不同的条件之间,使用逻辑运算符来连接。
让我们回忆一下,什么是逻辑运算符?
&& || !
与或非
来,写一下这段代码:
Scanner input = new Scanner(System.in);
System.out.println("请输入张三的Java课成绩:");
int scoreJava = input.nextInt();
System.out.println("请输入张三的音乐课成绩:");
int scoreMusic = input.nextInt();
if ((scoreJava >= 90 && scoreMusic > 80) || (scoreJava == 100 && scoreMusic > 70)) {
System.out.println("奖励一台PS5");
}
- 复杂条件下,() 小括号具有最高优先级;
- 当条件过长时,可以通过变量提取的方式来简化;
- 优先级:!> 算术运算符 > 关系运算符 > && > ||
if else
我们再来看一个例子:
如果张三Java课成绩 > 90分,奖励一台PS5,否则,就要俯卧撑100个。
Scanner input = new Scanner(System.in);
System.out.println("请输入张三的Java课成绩:");
int score = input.nextInt();
if (score > 90) {
System.out.println("奖励一台PS5");
}
else {
System.out.println("俯卧撑100个");
}

if else-if else 多重选择结构
先来看看长什么样:
if (score >= 90) {
System.out.println("良好");
}
else if (score >= 70) {
System.out.println("中等");
}
else if (score >= 60) {
System.out.println("及格");
}
else {
System.out.println("差");
}

(当然在分数里,是有上限的,可以是100分,也可以是150分,下限应该是0分)
很好理解对吧。
那么问题来了:
多重选择结构中的条件顺序可以任意排列吗?
答案是 不能
嵌套if选择结构
举例:如果张三Java课成绩 >= 90分,根据其年龄是否 >= 18岁,是则奖励一台PS5,否则奖励一根棒棒糖。
要求:年龄随机,范围取值:[10 - 24]
Math.random():产生一个[0,1)之间的随机数。
public static int random(int min, int max) {
return (int) (Math.random() * (max - min + 1) + min);
}
switch
举例:张三参加编程大赛,如果获得第一名:奖励一台PS5,第二名:奖励笔记本一台,第三名:奖励移动硬盘一个,否则,没有奖励。
可以使用多重if选择结构,但当条件一多,代码就变得比较啰嗦。
这个时候有没有那种一眼看上去就很清晰的代码结构呢?
关键字:switch
switch (表达式) {
case 常量1:
// 代码
break;
case 常量2:
// 代码
break;
case 常量3:
// 代码
break;
default:
// 代码
break;
}
switch判断条件为等值判断

浙公网安备 33010602011771号