选择结构(二 switch结构)

学习目标:

掌握switch选择结构

能够综合运用选择结构解决问题


学习内容:

一.switch选择结构

语法

switch (表达式) {

      case 常量 1:
		语句;
		break;

      case 常量 2:
		语句;
		break;
	…
	
	default:
		语句;
		break;
}

注意:(1)JDK1.7后,表达式的数据类型可以是int、short、byte、char、枚举、String类型

           (2)如果需要每个case执行完后跳出, 在每个case后不要忘记写break;

//错误示例
 int mingCi = 1;
 switch (mingCi){
	    case 1:
                System.out.println("参加麻省理工大学组织的1个月夏令营");               
        case 2:
                System.out.println("奖励惠普笔记本电脑一部");                
        case 3:
                System.out.println("奖励移动硬盘一个");                
        default:
                System.out.println("没有任何奖励 ");
 }
//如果需要每个case执行完后跳出,
在每个case后不要忘记写break;

           (3)case后面的常量必须各不相同

//错误代码
int mingCi = 1;
switch (mingCi){
        case 1:
                System.out.println("参加麻省理工大学组织的1个月夏令营");
        case 2:
                System.out.println("奖励惠普笔记本电脑一部");
        case 2:
                System.out.println("奖励移动硬盘一个");
        default:
                System.out.println("没有任何奖励 ");
}
//case后面的常量必须各不相同

           (4)default块顺序可以变动,但要注意其执行顺序。 通常,default块放在末尾,也可以省略

//错误代码
nt mingCi = 6;
switch (mingCi){
        default:
                System.out.println("没有任何奖励 ");
 	    case 1:
                System.out.println("参加麻省理工大学组织的1个月夏令营");
        case 2:
                System.out.println("奖励惠普笔记本电脑一部");
        case 3:
                System.out.println("奖励移动硬盘一个");

}

//default块顺序可以变动,但要注意其执行顺序。
通常,default块放在末尾,也可以省略

二.比较switch和多重if选择结构

相同点:都是用来处理多分支条件的结构

不同点:swtich选择结构只能处理等值条件判断的情况

              多重if选择结构 没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况

三.总结

(1)if选择结构,

包括以下形式 基本if选择结构:可以处理单一或组合条件的情况 if-else选择结构:可以处理简单的条件分支情况 多重if选择结构:可以处理分段的条件分支情况 嵌套if选择结构:可以处理复杂的条件分支情况

(2)switch选择结构

 多重分支并且条件判断是等值判断的情况

练习题

 代码如下:

package com.bass.day05;
/**
 *@authordesc lucky
 *@authordesc zhangjianguo 作者
 * @date 2022-10-07
 *@version 1.0.0
 * description 实现商品换购
 */
import java.util.Scanner;

public class GoosFor {
/**
 *@authordesc 商场推出优惠换购服务,规则如下:对于单次消费满50元的顾客,
 * 加2元,可换购百事可乐饮料1瓶。对于单次消费满100元的顾客,
 * 加3元,可换购500ml可乐饮料一瓶;
 * 加10元,可换购5kg面粉一袋。
 * 对于单次消费满200元的顾客,加10元,可换购500ml苏泊尔炒锅1个;加20元,可换购欧莱雅爽肤水一瓶。单次消费只有一次换购机会。
 *@authordesc zhangjianguo 作者
 * @date 2022-10-07
 *@version 1.0.0
 * description 实现商品换购
 */
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("请输入消费金额:");
        double money = sc.nextDouble();
        //输出换购界面
        System.out.println("是否参加优惠换购活动");
        System.out.println("1.满50元,加两元换购百事可乐饮料一瓶");
        System.out.println("2.满100元,加三元换购500ml可乐一瓶");
        System.out.println("3.满100元,加10元换购5公斤面粉");
        System.out.println("4.满200元,加10元换购一个苏泊尔炒菜锅");
        System.out.println("5.满200元,加20元可换购欧莱雅爽肤水一瓶");
        System.out.println("6.不换购");
        System.out.println("请选择:");
        int choose = sc.nextInt();
        //声明变量  换购增加的钱数 换购成功的商品名称 以及判断是否进行了换购
        double riseMoney = 0;
        String goods = "";
        boolean isOk = false;
        //参加换购 消费钱数大于等于50
        if(money >= 50){
        // 利用switch嵌套if语句筛选出符合条件的选择
        switch (choose) {
            //选择1
            case 1:
                if (money >= 50) {
                    riseMoney = 2;
                    goods = "百事可乐饮料一瓶";
                    isOk = true;
                    break;
                } else {
                    System.out.println("不满足换购条件");
                }
                //选择2
            case 2:
                if (money >= 100) {
                    riseMoney = 3;
                    goods = "500ml可乐一瓶";
                    isOk = true;
                    break;
                } else {
                    System.out.println("不满足换购条件");
                }
                //选择3
            case 3:
                if (money >= 100) {
                    riseMoney = 10;
                    goods = "5公斤面粉";
                    isOk = true;
                    break;
                } else {
                    System.out.println("不满足换购条件");
                }
                //选择4
            case 4:
                if (money >= 200) {
                    riseMoney = 10;
                    goods = "苏泊尔炒菜锅";
                    isOk = true;
                    break;
                } else {
                    System.out.println("不满足换购条件");
                }
                //选择5
            case 5:
                if (money >= 200) {
                    riseMoney = 20;
                    goods = "欧莱雅爽肤水一瓶";
                    isOk = true;
                    break;
                } else {
                    System.out.println("不满足换购条件");
                }
                //选择6
            case 6:
                System.out.println("不换购");
            default:
                System.out.println("谢谢您的惠顾");
                break;
        }
        }else{
            System.out.println("对不起您的金额无法参加换购活动");
        }
        //不参加换购
        System.out.println("您的消费总金额:"+(money+riseMoney));
        //对isok进行判断,来判断是否进行了换购,进而输出
        if(isOk){
            System.out.println("您的消费总金额:"+(money+riseMoney));
            System.out.println("成功换购"+goods);
        }
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值