学习目标:
掌握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);
}
}
}