选择结构
选择结构和循环结构可以用来界定一个语言到底是不是编程语言
目标:
1:了解流程控制语句
2:掌握基础if选择结构
3:掌握互斥if选择结构
4:掌握多重if选择结构
5:掌握嵌套if选择结构
6:掌握switch选择结构(前期控制台阶段用的多)
流程控制语句
就是用来实现对程序的执行流程进行控制的一种语句(自上而下执行、转向、分支…)
- 顺序流程:程序默认的就是这种语句,自上而下执行。
- 选择结构:出现分支的情况。
// 条件:韩迪的Java成绩高于90分,则孙雨雷嫁给他(三目运算符),否则就分手。
// 导入Scanner
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建对象
Scanner input = new Scanner(System.in);
System.out.print("韩迪的分数是:");
double num = input.nextDouble();
String result =(num >= 90) ? "孙雨雷嫁给他!" : "分手!";
System.out.println(result);
}
}
- 循环结构:选择执行的情况。
选择结构:
学习选择结构的原因:
1:使用三元运算符只能解决简单的判断情况
2:如果出现了复杂的业务处理,我们需要更多的解决方案
基础if选择结构的语法:
// 条件表达式的结果必须是布尔型(true或者false)
if(条件表达式){
// 如果条件成立 那么立刻执行
}
互斥if选择结构:
if(条件表达式){
//条件成立执行的内容
}else{
//条件不成立执行的内容
}
案例:
// 案例:韩迪的Java成绩高于90分,则孙雨雷嫁给他(if)反之则分手
//导入Scanner
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
// 输出文字
System.out.print("韩迪的分数是:");
double score = input.nextDouble();
// 执行循环
if(score >= 90) {
System.out.println("孙雨雷嫁给他!");
}else {
System.out.println("分手!");
}
}
}
多重if选择结构:
多重if表达式:
if(条件表达式1){
// 成立代码
}else if(条件表达式2){
// 成立代码
}else if(...){
// ...
}else{ // 可以省略 建议添加
// 如果上述条件都不满足 可以执行
}
案例:
/*
要求:考试成绩
大于80:优秀
大于60:良好
小于60:蒂花之秀
用多重if选择结构
*/
//导入Scanner
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
// 输出文字
System.out.print("分数是:");
double score = input.nextDouble();
// 执行循环
if(score >= 80 && score <= 100) {
System.out.println("优秀!");
}else if(score >= 60){
System.out.println("良好!");
}else {
System.out.println("蒂花之秀!");
}
}
}
注意事项:
- 多重if中的else if必须配合if使用,不能单独出现。它可以出现多次
- 多重if中的可选添加else代码块
- 多重if中代码是自上而下执行判断的,只要有一个条件满足,其余的条件就不再执行(范围大的放在上面)
嵌套if选择结构(非Java if结构必修语法)
案例
/*
需求:中秋节回老家
1.买票
2.检票
3.安检
*/
//导入Scanner
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
// 输出文字
System.out.print("是否带钱了(1:带了,2:没带):");
int money = input.nextInt();
// 执行循环
if( money == 1) {
System.out.println("请检票!");
System.out.print("请出示票(1:可以出示,2:出示不了):");
int ticket = input.nextInt();
if(ticket == 1) {
System.out.println("去安检!");
System.out.print("你带的刀有多长(cm):");
int knifeLong = input.nextInt();
if(knifeLong > 9) {
System.out.println("滚去警察局!");
}else {
System.out.println("快上车!");
}
}else if(ticket == 2) {
System.out.println("再去买!");
}else {
System.out.println("说人话!");
}
}else if(money == 2){
System.out.println("回家拿钱!");
}else {
System.out.println("请说人话!");
}
}
}
注意事项:
- 嵌套if可以无限嵌套,只要需求需要可以继续编写
- 嵌套if建议最好不超过3层,层级越多则容易造成代码阅读困难。
- 嵌套if,随意嵌套if语法(包含基础、互斥、多重)
练习:
/*
需求:参加计算机大赛
一等奖:参加夏令营
二等奖:奖励个锤子手机
三等奖:奖励个锤子耳机
选择更优的if选择,本案例采用多重if更佳
*/
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
// 输出文字
System.out.print("分数是:");
double score = input.nextDouble();
// 执行循环
if(score > 90 && score <= 100) {
System.out.println("一等奖!可以参加夏令营!");
}else if(score > 80){
System.out.println("二等奖!奖励个锤子手机");
}else if(score > 70){
System.out.println("三等奖!奖励个锤子耳机");
}else {
System.out.println("宁配吗?");
}
}
}
掌握switch选择结构
前期做等值判断建议用switch!!
switch(表达式){
case 常量1;
//代码
break;
case 常量2;
//代码
break;
case 常量3;
//代码
break;
default:
//默认情况
break;
}
注意事项:
- switch实现的功能和多重if一样,但是switch只能处理等值判断(无法实现范围判断)
- switch中break语句必须添加,否则会出现case穿透性
- switch中的表达式,只允许出现整数int(int byte short)(char也可以但是比较特殊)、字符串String、枚举类型Enum。
- switch中的case后接的是常量。(例如:1 2 3 )。
- switch中建议添加default语句!
switch严格来讲性能比多重if要好一些。