流程控制语句
在程序中,拥有三大类流程控制语句:
-
顺序控制语句:自上而下依次执行语句指令
-
选择/分支控制语句:不同的条件决定了执行不同的语句指令
-
循环控制语句:在满足条件的情况下可以反复的执行指定语句指令
这三大类的流程控制语句,结合使用,构造了复杂的程序。
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");
}
}
}