[关闭]
@Tean 2015-12-30T13:19:43.000000Z 字数 4523 阅读 2326

Day03_分支语句

Java


学习目标

  1. Java语句有哪些结构
  2. 掌握分支结构
  3. 掌握if语句的用法
  4. 掌握switch语句的用法
  5. 掌握键盘输入

一、程序流程结构

Java语句结构有三种:

  • 顺序结构:程序从上到下一行一行的执行代码,没有判断和跳转。
  • 选择结构:根据条件的不同,指向不同的代码语句。
  • 循环结构:程序可以循环的指向某些代码语句。

二、分支结构

分支语句实现程序流程控制的功能,根据一定的条件有选择的执行或跳过特定语句。

Java中分支结构有两种

  • if语句
  • switch语句

三、if语句

3.1 简单if语句

流程图
简单if


语法

  1. if(条件) { // 条件的结果必须是boolean类型 <下同>
  2. // TODO 执行语句 PS:若此处只有一句代码时,可省略大括号,但建议不要省略。<下同>
  3. }

案例
如果拉登的Java考试成绩大于等于90分,奥巴马就奖励拉登一个iPhone 6S Plus。

  1. public static void main(String[] args) {
  2. int score = 98; // 用来存储拉登的Java成绩
  3. //int score = 28;
  4. if(score >= 90) {
  5. System.out.println("奥巴马奖励iPhone 6S Plus一个。");
  6. }
  7. }

练习
如果拉登的Java成绩大于等于98分,并且SQL成绩大于等于80分,奥巴马奖励他水果机一个;或者Java成绩等于100分,SQL绩大于等于70分,奥巴马也可以奖励他。

3.2 if-else语句

流程图
if-else


语法

  1. if(条件) {
  2. // TODO 执行语句
  3. } else {
  4. // TODO 执行语句
  5. }

案例
如果拉登的Java考试成绩大于等于90分,奥巴马就奖励拉登一个iPhone 8S Plus;否则惩罚拉登一个月不能喝啤酒。

  1. public static void main(String[] args) {
  2. int score = 98; // 用来存储拉登的Java成绩
  3. //int score = 28;
  4. if(score >= 90) {
  5. System.out.println("奥巴马奖励iPhone 8S Plus一个。");
  6. } else {
  7. System.out.println("惩罚一个月不能喝啤酒。");
  8. }
  9. }

练习
如果福彩中了500万,我买车、资助希望工程、去欧洲旅游;
如果没中,我买下一期体彩,继续烧高香。

3.3 多重if语句

流程图
多重if


语法

  1. if(条件) {
  2. // TODO 执行语句
  3. } else if(条件) {
  4. // TODO 执行语句
  5. } else if(条件) {
  6. // TODO 执行语句
  7. } else {
  8. // TODO 执行语句
  9. }
  10. /* 注意:
  11. * 1. else if 可以有多个
  12. * 2. 最后的else可以有也可以没有
  13. * 3.
  14. */

案例
我想买车,买什么车决定于我在银行有多少存款
如果我的存款超过500万,我就买宝马740;
如果我的存款超过100万,我就买帕萨特;
如果我的存款超过50万,我就买桑塔纳;
如果我的存款超过10万,我就买奥拓;
如果我的存款10万以下,我就买奇瑞QQ。

  1. public static void main(String[] args) {
  2. int money = 320; // 用来存储存款
  3. if(money >= 500) {
  4. System.out.println("买宝马740");
  5. } else if(money >= 100) {
  6. System.out.println("买帕萨特");
  7. } else if(money >= 50) {
  8. System.out.println("买桑塔纳");
  9. } else if(money >= 10) {
  10. System.out.println("买奥拓");
  11. } else if(money < 10) {
  12. System.out.println("买奇瑞QQ");
  13. }
  14. }

思考:上述案例中多个条件的位置是否可以互换?


练习1
奥巴马的考试成绩为score。如果:
score >=90时输出: "学霸实在牛"
score >=80时输出: "学神要加油"
score >=70时输出: "学民好害羞"
score >=60时输出: "学弱打酱油"
score < 60时输出: "学渣泪在流"


练习2
如果今天是周一或周五,午餐就吃辣条炒月饼;
如果今天是周二,午餐就吃西红柿炒萝卜;
如果今天是周三或者周日,午餐就吃南瓜炒油条;
如果今天是周四或周六,午餐就吃鸡腿炒豆芽。

3.4 嵌套if语句

流程图
嵌套if


语法

  1. if(条件) {
  2. if(条件) {
  3. // TODO 执行语句
  4. } else {
  5. // TODO 执行语句
  6. }
  7. } else {
  8. // TODO 执行语句
  9. }
  10. /* 注意:上述三种if语句可以任意嵌套 */

案例
学校进行百米赛跑,如果10秒内(包括10秒)跑完需要进入下一场比赛,性别是男则进入男子组,性别是女则进入女子组;如果10秒没跑完,则直接淘汰。

  1. public static void main(String[] args) {
  2. int s = 8; // 存储比赛所需时间
  3. char gender = '男';
  4. if(s <= 10) {
  5. if(gengder == '男') {
  6. System.out.println("恭喜,进入男子组!");
  7. } else if(gengder == '女'){
  8. System.out.println("恭喜,进入女子组!");
  9. } else {
  10. System.out.prinln("您的性别貌似有误!");
  11. }
  12. } else {
  13. System.out.println("不好意思,您被淘汰!");
  14. }
  15. }

思考:上述案例中如果性别gender是String类型的话,会不会有问题,如果有问题的话如何解决?


练习
登录操作:先判断用户名是否是admin,如果不是,则提示:用户名不存在;如果是admin,再判断密码是否是123456,如果是123456则提示:登录成功,欢迎拉登;否则提示:密码错误!

四、switch语句

4.1 switch语句用法

流程图
switch


语法

  1. switch(表达式) {
  2. case 常量1:
  3. // TODO 执行语句
  4. break;
  5. case 常量2:
  6. // TODO 执行语句
  7. break;
  8. ... ...
  9. case 常量n:
  10. // TODO 执行语句
  11. break;
  12. [default:
  13. // TODO 执行语句
  14. break;
  15. ]
  16. }
  • 表达式的值必须是下列几种类型之一:
    • byte
    • short
    • int
    • char
    • enum (枚举,后面的课程会说)
    • String (Java7新增)
  • case后面的常量值(常量1、常量2、...常量n)必须是常量值(或用final修饰的变量),case的值不能是一个范围。
  • 所有case后的常量值不能有相同的,否则会编译出错。
  • break关键字用来在执行完一个case后使程序退出switch结构,如果没有break,则程序会继续执行下去,直到遇到break或执行完switch结束。
  • default子句是可选的,没必要的时候可以不加。
  • default通常出现在最后,也可以出现在前面,当所有case都不匹配时才会执行,进入default之后如果没有break,则继续执行其他case

案列1
大圣参加计算机编程大赛
如果获得第一名,将参加麻省理工大学组织的1个月夏令营
如果获得第二名,将奖励惠普笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,不给任何奖励

  1. int num = 3;
  2. switch(num) {
  3. case 1:
  4. System.out.println("参加麻省理工大学组织的1个月夏令营");
  5. break;
  6. case 2:
  7. System.out.println("奖励惠普笔记本电脑一部");
  8. break;
  9. case 3:
  10. System.out.println("奖励移动硬盘一个");
  11. break;
  12. default:
  13. System.out.println("不给任何奖励");
  14. break; // 此处的break可加可不加
  15. }

案列2
如果今天是周一或周五,午餐就吃辣条炒月饼;
如果今天是周二,午餐就吃西红柿炒萝卜;
如果今天是周三或者周日,午餐就吃南瓜炒油条;
如果今天是周四或周六,午餐就吃鸡腿炒豆芽。

  1. int day = 4;
  2. switch(day) {
  3. case 1:
  4. case 5:
  5. System.out.println("辣条炒月饼");
  6. break;
  7. case 2:
  8. System.out.println("西红柿炒萝卜");
  9. break;
  10. case 3:
  11. case 7:
  12. System.out.println("南瓜炒油条");
  13. break;
  14. case 4:
  15. case 6:
  16. System.out.println("鸡腿炒豆芽");
  17. break;
  18. }

练习1
龙傲天为他的手机设定了自动拨号
按1:拨东海龙王的号
按2:拨太上老君的号
按3:拨元始天尊的号
按4:拨鸿钧老祖的号


练习2
用switch实现:盘古的考试成绩为score。如果:
score >= 90时输出: "学霸实在牛"
score >= 80时输出: "学神要加油"
score >= 70时输出: "学民好害羞"
score >= 60时输出: "学弱打酱油"
score < 60时输出: "学渣泪在流"

4.2 switch语句与多重if语句的区别

  • 相同点:
    • 都是用来处理多分支条件的结构
  • 不同点:
    • switch:只能处理等值条件判断的情况,而且条件必须是byte、short、int、char、enum、String(Java7新增)中的类型之一。
    • 多重if:没有switch选择结构的限制,特别适合某个变量处于某个连续区间的情况。

五、获取键盘输入

  • 导包,以下两种任选其一。
  1. import java.util.Scanner; // 只导入Scanner类
  2. import java.util.*; // 导入util包下所有类
  • 创建Scanner对象。
  1. Scanner in = new Scanner(System.in);
  • 获取用户输入。
  1. int num = in.nextInt(); // 获取int类型输入
  2. double price = in.nextDouble(); // 获取double类型输入
  3. String info = in.next(); // 获取String类型数据
  • 案列:
  1. import java.util.Scanner; // 导包
  2. public class Demo {
  3. public static void main(String[] args) {
  4. // 创建Scanner对象
  5. Scanner in = new Scanner(System.in);
  6. System.out.print("请输入您的姓名:");
  7. String name = in.next(); // 获取键盘输入
  8. System.out.print("请输入您的年龄:");
  9. int age = in.nextInt(); // 获取键盘上输入
  10. }
  11. }

六、作业

  1. 根据用户定义的数值不同,打印对应的星期英文。
  2. 根据用户指定月份,打印该月份所属的季节:
    3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季。
  3. 根据用户输入的符号不同,做两个数的运算(+、-、*、/)。
  4. 根据星期的不同,每日吃的菜也不同。
  5. 判断登录名和密码:如果用户名为老毛,密码是123,就输出您好老毛;否则输出,对不起,您不是老毛。
  6. 根据年龄和性别来决定能不能搬动桌子,如果(年龄大于7岁)或者(年龄大于等于5岁并且性别是男),就能搬动桌子,否则就是不能搬动桌子。
  7. 从控制台接收用户输入的一个5位数字,判断他是不是回文数,所谓回文数就是个位与万位相同,十位与千位相同,比如 12321 78387 23832。
  8. 从控制台接收用户输入的任意一个年份,计算该年是不是润年。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注