switch (表达式) {
case 常量 1:
语句;
break;
case 常量 2:
语句;
break;
…
default:
语句;
break;
if选择结构,包括以下形式
基本if选择结构:可以处理单一或组合条件的情况
if-else选择结构:可以处理简单的条件分支情况
多重if选择结构:可以处理分段的条件分支情况
嵌套if选择结构:可以处理复杂的条件分支情况
switch选择结构
多重分支并且条件判断是等值判断的情况
练习(1)
需求说明
为小明制订学习计划,星期一、星期三、星期五学习编程,星期二、星期四、星期六学习英语,星期日休息。
代码如下
package bigger;
import java.util.Scanner;
public class Plan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期几:");
int week = sc.nextInt();
String result = "";
switch (week){
case 1:
case 3:
case 5:
result = "学习编程";
break;
case 2:
case 4:
case 6:
result = "学习英语";
break;
case 7:
result = "休息";
break;
default:
result = "输入结果不规范";
break;
}
System.out.println(result);
}
}
运行成功
练习(2)
需求说明
“我行我素购物管理系统”各菜单级联结构如图
使用switch选择结构实现从登录菜单切换到主菜单的功能
代码如下
package bigger;
import java.util.Scanner;
public class ShoppingMenu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用我行我素购物系统");
System.out.println("tt1.登录系统");//一级菜单
System.out.println("tt2.退出");
System.out.println("*************************");
System.out.println("请选择,输入数字:");
int num = sc.nextInt();
String result = "";
switch (num){
case 2:
result = "谢谢您的使用";
break;
default:
result = "您的输入不合法";
break;
case 1:
System.out.println("1.客户信息管理");//二级菜单
System.out.println("2.购物结算");
System.out.println("3.真情回馈");
System.out.println("4.注销");
int numnext = sc.nextInt();
switch (numnext){
case 4:
result = "注销";
break;
case 2:
result = "购物结算";
break;
default:
result = "您的输入不合法";
break;
case 1:
System.out.println("1.显示所以客户信息");//三级菜单
System.out.println("2.添加客户信息");
System.out.println("3.修改客户信息");
System.out.println("4.查询客户信息");
break;
case 3:
System.out.println("1.幸运大放送");//三级菜单
System.out.println("2.幸运抽奖");
System.out.println("3.生日问候");
}
}
System.out.println(result);
}
}
运行成功
练习(3)
需求说明
商场推出优惠换购服务,规则如下:对于单次消费满50元的顾客,加2元,可换购百事可乐饮料1瓶。对于单次消费满100元的顾客,加3元,可换购500ml可乐饮料一瓶;加10元,可换购5kg面粉一袋。对于单次消费满200元的顾客,加10元,可换购500ml苏泊尔炒锅1个;加20元,可换购欧莱雅爽肤水一瓶。单次消费只有一次换购机会。
代码如下
package bigger;
import java.util.Scanner;
public class Buy {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入消费金额:");
double num = sc.nextDouble();
System.out.println("是否参加优惠换购活动:");
System.out.println("1.满50元,加2元可换购百事可乐饮料1瓶");
System.out.println("2.满100元,加3元可换购500ml可乐饮料一瓶");
System.out.println("3.满100元,加10元可换购5kg面粉一袋");
System.out.println("4.满200元,加10元可换购500ml苏泊尔炒锅1个");
System.out.println("5.满200元,加20元可换购欧莱雅爽肤水一瓶");
System.out.println("0.不换购");
System.out.println("请选择:");
int numnext = sc.nextInt();
String result = "";
if (num >= 50){//满50可用
switch (numnext){
case 1:
result = "本次消费金额:" + (num + 2) + "成功换购:百事可乐饮料1瓶";
break;
case 2:
if (num >= 100){//满100可用
result = "本次消费金额:" + (num + 3) + "成功换购:换购500ml可乐饮料一瓶";
}
break;
case 3:
if (num >= 100){//满100可用
result = "本次消费金额:" + (num + 10) + "成功换购:换购5kg面粉一袋";
}
break;
case 4:
if (num >= 200){//满200可用
result = "本次消费金额:" + (num + 10) + "成功换购:换购500ml苏泊尔炒锅1个";
}
break;
case 5:
if (num >= 200){//满200可用
result = "本次消费金额:" + (num + 20) + "成功换购:换购欧莱雅爽肤水一瓶";
}
break;
default:
result = "不换购";
}
}else {
result = "消费金额不足";
}
System.out.println(result);
}
}
运行成功
练习(4)
补充作业:
编程实现迷你计算器功能,支持“+” “-” “*” “/”,从控制台输入两个操作数,并选择输入的操作,输出运算结果。
代码如下
package bigger;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个运算数");
double num = sc.nextDouble();
System.out.println("请输入第二个运算数");
double number = sc.nextDouble();
System.out.println("请输入运算符");
String symbol = sc.next();
switch (symbol){
case "+":
System.out.println(num + number);
break;
case "-":
System.out.println(num - number);
break;
case "*":
System.out.println(num * number);
break;
case "/":
if (number == 0){
System.out.println("除数不能为0");
}else {
System.out.println(num / number);
}
break;
default:
System.out.println("请输入正确运算符!!!");
}
}
}
运行成功
个人问题:开始的swish和if的互相嵌套不能很好的把控。代码量比之前多,不能很好的判断对错。



