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 5
1if (2) { 3}4

2 如果对 走 1 2 3 4

2 如果不对 走 1 2 4

两个并列 if 语句
1 2 3 4 5 6 7 8 9
1if (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 9
1if (2) { 3 if (4) { 5 } 6}7

只有 2 对了,才会 执行 3 - 6

如果 2 是错的,4 是对的,程序的执行序列是什么
一个 if 语句 带 else 分支
1 2 3 4 5 6 7
1if (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 7
1if (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 9
1if (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 元

ZZAX 微信公众

文档一更新,立刻告诉你