Day_03选择结构
程序员文章站
2022-03-10 14:52:26
...
选择结构和循环结构可以界定一个语言是否是编程语言的标准
1.了解流程控制语句
流程控制语句:实现对程序的执行流程今次那个控制的语句。
- 顺序流程: 程序默认的流程语句 (自上而下挨个执行)
- 选择结构:(分支) 根据条件选择分支执行
- 循环结构:根据条件进行循环执行
2.掌握基础if选择结构
学习结构的原因:
- 三元运算符只能解决简单的判断情况
- 如果出现了复杂的业务处理,我们需要更多的解决方案
基础if选择结构的语法
// 条件表达式的结果必须是true或false(布尔类型)
if(条件表达式){ // 条件成立执行 System.out.print();
System.out.print();
}
// 花括号可以不写但是为了规范建议添加
if(条件表达式)
System.out.print();
例:
/*
* 需求:Java考试能够大于90分 有奖励
*/
public class Demo {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
System.out.print("请输入Java考试成绩:");
double score = input.nextDouble();
// 套语法
if(score > 90) {
System.out.println("有奖励!");
}
if(score <= 90) {
System.out.println("没有奖励!");
}
}
}
使用逻辑运算符实现复杂的if处理:
例:
/*
* 需求:
* 如果Java成绩大于90分,Go成绩大于80分 可以得奖
* 或者
* 如果Java成绩考了100分,Go成绩只需要大于70分 也可以得奖
*/
public class Demo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 提示输入Java成绩和Go成绩
System.out.print("请输入Java成绩:");
double javaScore = input.nextDouble();
System.out.print("请输入Go成绩:");
double goScore = input.nextDouble();
// 伪代码:(Java成绩 > 90 && go成绩 > 80) || (Java成绩 == 100 && go成绩 > 70)
// 套语法
if((javaScore > 90 && goScore > 80) || (javaScore == 100 && goScore > 70)) {
System.out.println("有奖励!");
}
// 反之
if(!((javaScore > 90 && goScore > 80) || (javaScore == 100 && goScore > 70))) {
System.out.println("没有奖励!");
}
}
}
3.掌握互斥if选择结构
if(条件表达式){
// 条件成立执行的内容
}else{
// 条件不成立执行的内容
}
例:
/*
* 需求:Java考试能够大于90分 有奖励
* 小于或等于则没有奖励
*/
public class Demo {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
System.out.print("请输入Java考试成绩:");
double score = input.nextDouble();
// 套语法
if(score > 90) {
System.out.println("有奖励!");
}else {
System.out.println("没有奖励!");
}
}
}
4.掌握多重if选择结构
if(条件表达式1){
// 成立代码
}else if(条件表达式2){
// 成立代码
}else if(...){
// ...
}else{
// 如果上述条件都不满足 可以执行
}
例:
/*
* 需求:
* 考试成绩大于等于80为优秀
* 考试成绩大于等于60为良好
* 好事成绩小于60为差
*/
public class Demo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 提示输入学生成绩
System.out.print("请输入考试成绩:");
double score = scan.nextDouble();
// 套语法
if(score >= 80) {
System.out.println("优秀!");
}else if(score >= 60) {
System.out.println("良好!");
}else {
System.out.println("差!");
}
}
}
注意事项:
- 多重if中的else if必须配合if使用,不能单独出现,它可以出现多次
- 多重if中可选添加else代码块
- 多重if中代码是自上而下执行判断的,只要有一个条件满足,其余的条件就不再执行(范围大的放在上方)
5.掌握嵌套if选择结构(非Java必修语法)
例:
/*
* 需求:坐火车回家
* 1.买票
* 2.检票
* 3.安检
*/
public class Demo {
public static void main(String[] args) {
System.out.println("正在买票中~~~");
// 0无票 1有票
int hasTicket = 1;
// 不超过9cm就可以通过安检
int lengthOfKnife = 8;
System.out.println("正在检票中~~~");
// 判断
if(hasTicket == 1) { // 有票
System.out.println("准备安检~~~");
// 判断是否能通过安检
if(lengthOfKnife < 9) {
System.out.println("准备上车!");
}else {
System.out.println("这是通向幼儿园的车!你的刀不允许出现!");
}
}else { // 无票
System.out.println("滴滴滴~~~无票乘客!");
}
}
}
- 嵌套if可以无限嵌套,只要需求需要则可以继续编写
- 嵌套if建议最好不超过3层,层级过多则容易导入代码阅读困难
- 嵌套if,随意嵌套if语法(基础if、互斥if、多重if)
6.掌握switch选择结构
switch基本语法:
switch(表达式){
case 常量1:
// 代码
break;
case 常量2:
// 代码
break;
case 常量....:
// 代码
break;
default:
// 默认情况
break;
}
注意事项:
- switch实现的功能和多重if一样,但是switch只能处理等值判断情况。(无法实现范围判断)
- switch中break语句必须添加,否则会出现case穿透性。
- switch中的表达式,只允许出现 整数int(byte short char(特殊))、字符串String、枚举类型。
- switch中的case后接的是常量(例如:1 2 3 “1” “2” "3 "… “星期一” “星期二”… 固定值<死值>)。
- switch中建议添加default语句!
switch严格来讲性能比多重if要好一些。
例:
/*
* 需求: 查看课程
* 第一节课:语文
* 第二节课:数学
* 第三节课:英语
*/
switch(timeTable) {
case 1:
System.out.println("语文!");
break;
case 2:
System.out.println("数学!");
break;
case 3:
System.out.println("英语!");
break;
default:
System.out.println("输入错误!");
break;
}
还可以合理的利用case的穿透性:
switch(dayOfWeek) {
case "星期一": // dayOfWeek.equals("星期一")
case "星期二":
case "星期三":
case "星期四":
case "星期五":
System.out.println("好好学习!");
break;
case "星期六":
case "星期日":
System.out.println("好好休息!");
break;
default:
System.out.println("非法星期输入!");
break;
}
来自查老师课堂