选择结构
1、if单选择结构
2、if双选择结构
3、if多选择结构
4、嵌套的if结构
5、switch多选择结构
if单选择结构
我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示
语法:
if (布尔表达式) {
// 如果布尔表达式为true将执行的语句
}
代码:
package struct;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
// equals判断字符串是否相等
if (s.equals("Hello")) {
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
我们先来一次错误的输入:
我们输入的是:safaf,程序没有走到if语句中去,因为不满足if语句的条件,所以输出End
我们输入Hello看看:
输入的Hello满足if语句的条件,所以将输入的Hello输出。
if双选择结构
那现在有一个需求,公司要收购一个软件,成功了,给人支付100万,失败了,自己找人开发。这样的需求用一个if就搞不定了,我们需要有两个判断,需要一个双选择结构,所以就有了if-else结构。
语法
if (布尔表达式) {
//如果布尔表达式的值为true
} else {
//如果布尔表达式的值为false
}
代码:
package struct;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//考试分数大于60分为及格,小于60分为不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score > 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
scanner.close();
}
}
我们输入80:
我们输入50:
if多选择结构
我们发现刚才的代码不符合实际情况,真实的情况可能还存在ABCD,存在区间多级判断,比如:90到100是A,80到90是B。。。等等,在生活中我们的选择也不仅仅只有两个,所以我们需要一个多选择结构来处理这类问题。
语法
if (布尔表达式 1) {
//布尔表达式 1的值为true执行的代码
} else if (布尔表达式 2) {
//布尔表达式 2的值为true执行的代码
} else if (布尔表达式 3) {
//布尔表达式 3的值为true执行的代码
} else {
//如果以上布尔表达式的值都不为true执行的代码
}
代码:
package struct;
import java.util.Scanner;
public class Demo03 {
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("恭喜满分");
}else if (score < 100 && score >=90) {
System.out.println("A");
}else if (score < 90 && score >= 80) {
System.out.println("B");
}else if (score < 80 && score >= 70) {
System.out.println("C");
}else if (score < 70 && score >= 60) {
System.out.println("D");
}else if (score < 60 && score >= 0){
System.out.println("不及格");
}else {
System.out.println("输入的成绩不合法!!!");
}
scanner.close();
}
}
我们来输入成绩120:
我们来输入成绩为80:
我们来输入成绩为59:
也就是说:输入一个成绩,满足哪个if条件语句,就会输入相应的执行语句。
嵌套的if结构
使用嵌套的if…else语句是合法的。也就是说你可以在另一个if或者if…else中使用if或者if…else语句,你可以像if语句一样嵌套else if…else
语法
if (布尔表达式 1) {
//布尔表达式 1的值为true执行的语句
if (布尔表达式 2) {
//布尔表达式 2的值为true执行的语句
}
}
思考:我们要找一个数,在1~100之间。
switch多选择结构
多选择结构还有一个实现方式就是switch…case语句
switch…case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch语句中的变量类型可以是:
1、byte、short、int或char
2、从javase7开始,支持字符串String类型
3、同时case标签必须为字符串常量或字面量
语法
switch (expression) {
case value:
//语句
break; //可选
case value:
//语句
break; //可选
//你可以有任意数量的case语句
default: //可选
//语句
}
代码:
package struct;
public class SwitchDemo01 {
public static void main(String[] args) {
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("一般");
break;
case 'D':
System.out.println("及格");
break;
case 'E':
System.out.println("不及格");
break;
default:
System.out.println("未知等级");
}
}
}
结果输出为一般
在这里有一个case穿透现象,我们来看看是怎么穿透的
代码:
package struct;
public class SwitchDemo01 {
public static void main(String[] args) {
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("一般");
case 'D':
System.out.println("及格");
case 'E':
System.out.println("不及格");
default:
System.out.println("未知等级");
}
}
}
会发现,如果一个case语句下没有break结束语句,那么程序会在该满足条件的语句输出后继续输出后面的语句,知道程序执行完毕。
String类型
代码:
package struct;
public class SwitchDemo02 {
public static void main(String[] args) {
String name = "狂神";
switch (name) {
case "狂神":
System.out.println("狂神");
break;
case "kuangshen":
System.out.println("kuangshen");
break;
default:
System.out.println(".........");
}
}
}
输出结果为: