3 选择结构
3.1 if选择结构
3.1.1 基本if结构
- 语法
if(条件){
// 代码块
}
-
执行流程
当if条件为真,执行代码块,否则不执行代码块。
-
代码
public class Demo1 {
public static void main(String[] args) {
// 需求: 张浩的考试成绩>90分,奖励一部Iphone6s
Scanner sc = new Scanner(System.in);
System.out.println("输入张浩的成绩:");
double score = sc.nextDouble();
if (score > 90) {
System.out.println("奖励一部Iphone6s");
}
System.out.println("程序运行结束!");
}
}
3.1.2 复杂条件的if
public class Demo2 {
// 复杂条件的if语句
public static void main(String[] args) {
// 张浩Java成绩大于90分,并且音乐成绩大于80分时,或者Java成绩等于100分,
// 音乐成绩大于70分时,老师奖励他,该怎么做呢
Scanner sc = new Scanner(System.in);
System.out.println("输入java成绩:");
double scoreJava = sc.nextDouble();
System.out.println("输入音乐成绩:");
double scoreMusic = sc.nextDouble();
boolean flag = (scoreJava>90&&scoreMusic>80)||(scoreJava==100&&scoreMusic>70);
if (flag) {
System.out.println("奖励iphone6s");
}
System.out.println("程序结束");
}
}
3.2 流程图
- 流程图是算法的图形化表示方法
- 常用的流程图
3.2.1 顺序流程
-
程序按照从上到下执行,形成的流程
3.2.2 选择流程
- 通过条件判断形成的分支结构流程
3.2.3 if条件流程图
-
代码
public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入张浩的成绩:"); double score = sc.nextDouble(); if (score > 90) { System.out.println("奖励一部Iphone6s"); } System.out.println("程序运行结束!"); } }
-
流程图
3.3 if-else结构
- 语法
if(条件){
// if语句块
}else{
// else语句块
}
-
执行流程
当条件为真时,执行if语句块;否则执行else语句块。
-
代码
public class Demo3 {
public static void main(String[] args) {
// 输入java成绩,大于90分奖励iphone6s 否则蹲马步5分钟
Scanner sc = new Scanner(System.in);
System.out.println("Input your java score: ");
double scoreJava = sc.nextDouble();
if (scoreJava > 90) {
System.out.println("搞的不错,奖励一部iphone6s!");
} else {
System.out.println("先蹲马步5分钟,继续努力!");
}
// String res = scoreJava > 90 ? "搞的不错,奖励一部iphone6s!" : "先蹲马步5分钟,继续努力!";
// System.out.println(res);
}
}
-
流程图
3.4 if-else-if结构
- 语法
if(条件1){
// 语句1
}else if(条件2){
// 语句2
}else if(条件3){
// 语句3
}
...
else if(条件n){
// 语句n
}else{
// else语句
}
-
执行流程
当条件1为真,执行语句1,否则判断条件2
当条件2为真,执行语句2,否则判断条件3
当条件3为真,执行语句3,否则判断条件n
当条件n为真,执行语句n,否则执行else语句
-
代码
public class Demo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入你的考试成绩:");
double score = sc.nextDouble();
if (score >= 80) {
System.out.println("优秀");
} else if (score >= 70) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("中等");
} else {
System.out.println("差");
}
}
}
多重if的短路效应: 当某个条件为真时,其它的条件都不会再判断,哪怕其它的条件也为真
上面的代码中,如果score=90,score>=80为真,输出 ‘优秀’,其它条件即使为真不会执行。
- 流程图
3.5 if嵌套
-
在一个条件判断中还有其它的条件判断,这种结构称条件嵌套,条件可以在if或else中,可以无限层嵌套
-
语法
if(条件1) { if(条件2) { // 代码块1 } else { // 代码块2 } } else { // 代码块3 }
-
执行流程
当条件1为假时,
执行代码块3
当条件1为真时,
判断条件2,
当条件2为真时,执行代码块1,否则执行代码块2
-
代码
public class Demo5 {
public static void main(String[] args) {
// if条件嵌套,可以有多层,可以在if中,也可以在else
Scanner sc = new Scanner(System.in);
// score<10s 入围决赛,否则淘汰
System.out.println("输入跑步成绩:");
double score = sc.nextDouble();
if (score >= 10) {
// 淘汰
System.out.println(score + "s成绩被淘汰");
} else {
// 进入决赛
System.out.println(score + "s,恭喜进入决赛!");
// 输入性别判断进入男子 还是 女子决赛
System.out.println("输入性别(男/女):");
String gender = sc.next();
if (gender.equals("男")) {
System.out.println(score + "s,恭喜进入男子组决赛!");
} else if (gender.equals("女")) {
System.out.println(score + "s,恭喜进入女子组决赛!");
} else {
System.out.println("把妖赶出去!");
}
}
}
}
3.6 switch结构
-
switch结构主要是做等值判断的分支结构
-
语法
switch(表达式){ case 常量1:{ 语句1; break; } case 常量2:{ 语句2; break; } ... case 常量n:{ 语句n; break; } default:{ 默认语句; break; } } case 常量的数据类型可以是: int short byte char 枚举 String ca