选择结构(if、if-else、switch)

流程控制语句

在程序中,拥有三大类流程控制语句:

  • 顺序控制语句:自上而下依次执行语句指令

  • 选择/分支控制语句:不同的条件决定了执行不同的语句指令

  • 循环控制语句:在满足条件的情况下可以反复的执行指定语句指令

这三大类的流程控制语句,结合使用,构造了复杂的程序。

if 选择结构

    if:如果

基础if选择结构

语法:

// 条件表达式通过关系运算符和逻辑运算符等构成
// true、false
if (条件表达式) {
    // 条件成立时执行的代码段
}

 注意:代码规范,缩进和空格。

if-else选择结构

    互斥 if 选择结构

    else:否则

语法:

if (条件表达式) {
    // 条件成立时执行的代码段
} else {
    // 条件不成立时执行的代码段
}

多重if选择结构

    if-else选择结构

语法:

if (条件表达式1) {
    // 条件1成立时执行的代码段
} else if (条件表达式2) {
    // 条件2成立时执行的代码段
} else {
    // 当条件都不满足时执行的代码段
}

注意事项:

  • 多重 if 可以写很多 else if 分支条件,但必须以 if 开头。

  • 多重 if 可以在结尾处添加一个 else 作为 “候补” 分支。

  • 多重 if 是自上而下的执行 if 判断,只要有一个分支成立,后续的分支不再执行判断。可以极大的简化一些范围型的判断,但是得注意条件判断的放置顺序问题。

嵌套if选择结构

if (外层条件表达式) {
    if (内层条件表达式) {
        
    }
}

如果外层条件不成立,内层条件不会执行判断!

各种 if 之间可以相互嵌套!

switch选择结构

switch语法

switch (表达式) {
    case 常量1:
        // 表达式和常量1相等时,执行的代码段
        break;
    case 常量2:
        // 表达式和常量2相等时,执行的代码段
        break;
    default:
        // 当表达式和所有常量都不相等时,执行的代码段
        break;
}

注意事项:

    1.表达式不是条件表达式

在 switch 后可以使用 int、String(Java 7支持)、Enum(枚举)

数据类型转换:由于自动类型转换的问题,byte、short、char 也是受支持的。

    2. 每一个case后接的是一个常量

    3.每一个case都应该以一个break结尾,break是用于跳出switch结构的。

如果缺失了 break,会出现 case 的穿透性问题。

判断分支成立并执行后,会依次向其他分支穿透执行,直到遇到 break 或 switch 结束为止。

switch 和 if 的对比

相同点:

  • switch 和 if 都是选择结构

  • switch 和 多重 if 都是多分支的选择结构

不同点:

  • switch 它只能用于等值判断的情况 ,而多重 if 还可以用于范围型判断

做一下下面的题叭

1. 使用if选择结构实现完整的 BMI 计算及提示

  • 输入身高

  • 输入体重

  • 计算BMI

  • 提示:10 <= 偏瘦、18.5 <= 正常、24 <= 过重、28 <= 肥胖

2. 模拟登录

《参考文档》

尝试一下,挑战自己ヾ(◍°∇°◍)ノ゙

3. 人机猜拳

《参考文档》

4. 幸运抽奖

《参考文档》

附:参考

1.

import java.util.Scanner;

/*
 * BMI计算
 */
public class HomeWork1 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		// 引导用户输入
		System.out.print("请输入您的身高(单位:m):");
		double height = input.nextDouble();
		System.out.print("请输入您的体重(单位:kg):");
		double weight = input.nextDouble();
		
		// 计算BMI
		// BMI = weight / (height * height)
		double bmi = weight / (height * height);
		
		// 计算身体状态
		String status;
		if (bmi >= 28) {
			status = "肥胖";
		} else if (bmi >= 24) {
			status = "过重";
		} else if (bmi >= 18.5) {
			status = "正常";
		} else {
			status = "偏瘦";
		}
		
		// 根据BMI提示
		// 以格式化字符串来输出一些内容
		//   %f 任意的浮点数据
		//   %d 任意的整数数据
		//   %s 任意的字符串数据
		System.out.printf("您好!您的BMI 值为:%.1f,身体状态【%s】\n", bmi, status);
	}

}

2.

import java.util.Scanner;

// 模拟登录
public class HomeWork2 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		// 用户输入
		System.out.print("请输入您的用户名:");
		String username = input.next();
		System.out.print("请输入您的用户密码:");
		String password = input.next();
		
		// 登录
		if ("小李".equals(username) && "000000".equals(password)) {
			System.out.println("欢迎来到小李的世界");
		} else {
			System.out.println("不对哦,拜拜┏(^0^)┛");
		}
	}

}

3.

import java.util.Scanner;

// 猜拳游戏
public class HomeWork3 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		
		// 玩家出拳
		System.out.print("请您出拳(1.石头 2.剪刀 3.布):");
		int player = input.nextInt();
		
		// 电脑随机出拳:[1, 3] -> [1, 4)
		int computer = (int) (Math.random() * 3) + 1;
		System.out.println("电脑出拳为:" + computer);
		
		// 比较
		// 1.玩家赢 2.电脑赢 3.平局
		// 玩家赢:p石头 && c剪刀 || p剪刀 && c布 || p布 && c石头
		if ((player == 1 && computer == 2) 
				|| (player == 2 && computer == 3) 
				|| (player == 3 && computer == 1)) {
			System.out.println("你赢啦赢啦(*^▽^*)");
		} else if (player == computer) {
			System.out.println("这次我们平局哦");
		} else {
			System.out.println("你输了哦,还要再来嘛(*^▽^*)");
		}
	}
}

4.

import java.util.Scanner;

// 幸运会员
public class HomeWork4 {

	public static void main(String[] args) {
		// 生成幸运数字
		// 单个数字位数字范围:[0, 9] -> [0, 10)
		int luckyNum = (int) (Math.random() * 10);
		System.out.println("幸运数字是:" + luckyNum);
		
		Scanner input = new Scanner(System.in);
		
		// 用户输入
		System.out.print("请输入您的会员卡号:");
		int id = input.nextInt();
		
		// 计算用户会员号的百位数字
		int bai = id / 100 % 10;
		
		// 计算用户是否是幸运会员
		if (bai == luckyNum) {
			System.out.println("恭喜中奖啦(*^▽^*)");
		} else {
			System.out.println("啊哦 没有中奖o(╥﹏╥)o");
		}
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值