Lesson 04
条件 与 分支Conditions and Branches
if 语句If Statements
外卖结单案例
1 2 3 4 5+6+7+8+9+10+11*12+13 14 15 16 public class Main { public static void main(String[] args) { int price = 9; Console.println("要加米饭么?"); Console.println("1 要"); Console.println("2 不要"); int option = Console.readInt(); if (option == 1) { price = price + 1; } Console.println("请支付 " + price + "元"); }}
if
基本认知
格式
if (<condition>) { <statement> ... }
效果
被 if
语句管辖的内容,只有 condition 通过 才会执行。
小要求
<condition>
部分必须为 生产 布尔值的 表达式
缩进Indentation
干什么用
代表从属关系
缩进 与 if
有 缩进的 不一定执行
缩进规则
{
之后 换行 + 缩进
换行 - 缩进 之后 }
找大括号
L 大法
重要的层级
层级 | 意义 | 详细 |
---|---|---|
0 | 结构 | 112 里会讲 |
1 | 函数 | 111 之后讲 |
2 | 执行代码 | 目前可以认为一定执行 |
3+ | 执行代码 | 不一定执行 |
if 语句规范
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15// 只有一句话 if ( ... ) { statement;} // 可以省略大括号if ( ... ) statement; // 可以不缩进if ( ... )statement; // 可以不换行if ( ... ) statement;
if
语句相关样式
一个 if
语句
1 2 3 4 51if (2) { 3}4
2 如果对 走 1 2 3 4
2 如果不对 走 1 2 4
两个并列 if
语句
1 2 3 4 5 6 7 8 91if (2) { 3}4if (5) { 6}7
两个 if 语句 互不影响
3 6 有没有可能 都 执行?
A. 会。 B. 不会
3 6 有没有可能 都不 执行?
A. 会。 B. 不会
如果 2 是错的,5 是对的,程序的执行序列是什么
两个嵌套的 if
语句
1 2 3 4 5 6 7 8 91if (2) { 3 if (4) { 5 } 6}7
只有 2 对了,才会 执行 3 - 6
如果 2 是错的,4 是对的,程序的执行序列是什么
一个 if
语句 带 else
分支
1 2 3 4 5 6 71if (2) { 3} else { 4}5
2 如果对 走 1 2 3 5
2 如果不对 走 1 2 4 5
3 4 有没有可能 都 执行?
A. 会。 B. 不会
3 4 有没有可能 都不 执行?
A. 会。 B. 不会
一个 if
语句 带 else if
分支
1 2 3 4 5 6 71if (2) { 3} else if (4){ 5}6
2 如果对 走 1 2 3 6
2 如果不对 4 如果对 走 1 2 4 5 6
2 4 都不对 走 1 2 4 6
一个 if
语句 带 else if
分支 和 else
分支
1 2 3 4 5 6 7 8 91if (2) { 3} else if (4){ 5} else { 6}7
2 对 4 不对 会走哪
2 不对 4 对 会走哪
2 4 都不对 会走哪
if
语句 完整规则
一个 if
语句中
if
只能出现 1 次
else if
可以出现 0 - n 次
else
可以出现 0 - 1 次
组合方式
可以并列
可以嵌套
语句 与 分支 对比
一个 if
语句 多个 branch
最多执行 1 个 branch
不可能执行 2 个以上的 branch
多个 if
语句,每个 1 个 branch
可能执行多个 branch
因为 这些 if 语句 互不影响
挑战
功能
输入 年龄
输出 票的种类
数据
年龄 | 票种 |
---|---|
0 - 12 | 儿童票 |
13 - 60 | 标准票 |
61 - | 老年票 |
样例
> <18标准票
if
语句逻辑关系
每个后面的 condition 只有在前面所有 condition 都不成立的情况下 才 check
只可能走到一个 branch 里
使用前
1 2 3 4 5 6 7 8 9 10 int age = 10;if (age > 60) { System.out.println("老年"); } else if (age <= 60 && age > 18) { System.out.println("成年"); } else { System.out.println("未成年");}
使用后
1 2 3 4 5*6 7 8 9 10 int age = 10;if (age > 60) { System.out.println("老年"); } else if (age > 18) { System.out.println("成年"); } else { System.out.println("未成年");}
挑战
结账 第一版本
程序让用户输入金额
< >输入金额200
如果金额 不到 100 元
收取固定 6 元 物流费用
< < <商品总价:30 元 物流费:6 元订单总价:36 元
如果金额 达到 100 元
就包邮处理
< < <商品总价:160 元 物流费:免费订单总价:160 元