1.为什么使用switch选择结构?
能够解决一些:条件为等值判断
2.什么是switch选择结构?
switch (表达式) {
case 常量 1:
语句;
break;
case 常量 2:
语句;
break;
…
default:
语句;
break;
}
3.如何使用switch选择结构?
举例:
int mingCi = 1;
switch (mingCi) {
case 1:
System.out.println("参加麻省理工大学组织的1个月夏令营");
break;
case 2:
System.out.println("奖励惠普笔记本电脑一部");
break;
case 3:
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("没有任何奖励 ");
}
结果:参加麻省理工大学组织的1个月夏令营
4.Switch常见错误?
1)如果需要每个case执行完后跳出,在每个case后不要忘记写break; (结束分支)
2)case后面的常量必须各不相同 (case 2: ... case 2:..)
3)default块顺序可以变动,但要注意其执行顺序;通常,default块放在末尾,也可以省略
5.比较switch和多重if选择结构?
多重if比switch使用的范围更广一些,不仅可以处理等值的情况,还可以处理区间的
switch 只能处理条件判断 (有区间的使用if,没有区间限制的使用switch)
相同点:比较switch和多重if选择结构
不同点:switch选择结构,只能处理等值条件判断的情况,而且条件必须是整型
变量或字符型变量或字符串
多重if选择,没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况
举例:自动拨号
public class Case1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请选择..");
int choice=input.nextInt();
switch(choice){
case 1:
System.out.println("拨打爸爸的手机");
break;
case 2:
System.out.println("拨打妈妈的手机");
break;
case 3:
System.out.println("拨打爷爷的手机");
break;
case 4:
System.out.println("拨打爷爷的手机");
break;
default:
System.out.println("拨打cuowu");
}
}
}
练习:菜单跳转
import java.util.Scanner;
import javax.print.DocFlavor.INPUT_STREAM;
public class Case2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("欢迎使用我行我素管理系统");
System.out.println("1.登陆系统");
System.out.println("2.退出");
System.out.println("请选择....");
int choice=0;
choice=input.nextInt();
if(choice==1){
System.out.println("登陆系统");
System.out.println("1.客户信息管理2.购物结算3.真情回馈4.注销");
System.out.println("请选择....");
int b=1;
b=input.nextInt();
switch(b){
case 1:
System.out.println("1.购物系统管理>>客户信息管理");
System.out.println("1.显示所有客户信息2添加客户信息3.修改客户信息4.查询客户信息");
System.out.println("请选择....");
break;
case 2:
System.out.println("2.购物结算");
break;
case 3:
System.out.println("3.购物系统管理>>真情回馈");
System.out.println("1-幸运大发送;2-幸运抽奖;3-生日问候");
System.out.println("请选择....");
break;
default:
System.out.println("4.注销");
break;
}
}else{
System.out.println("退出系统");
}
}
}
心得:实现3级菜单。If嵌套switch
6.为什么要处理系统异常?
如果用户错误地输入了一个不允许的字符,例如“s”,程序会怎样出现java.util.InputMismatchException
7.如何处理系统异常?
Scanner对象的hasNextInt()方法,可以判断用户从键盘输入的字符是否是合法的数字
举例:避免输入错误
import java.util.Scanner;
public class Case3 {
public static void main(String[] args) {
//处理系统异常
Scanner input=new Scanner(System.in);
System.out.println("请输入数字");
if(input.hasNextInt()){
int num=input.nextInt();
}
else{
System.out.println("对不起,请输入整数");
}
}
}
操作:实现商品换购
import java.util.Scanner;
public class as {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
double cost=0;//消费金额
double add=0;//换购金额
String product=null;//换购产品
String isOk=null;//是否参加换购活动
int choice=0;//选项
double pay=0;//支付金额
System.out.println("请输入您的消费金额");
cost=input.nextDouble();
System.out.println("是否参加换购活动... y-参加;n-不参加");
isOk=input.next();
if(isOk.equals("y")) {
System.out.println("1-消费满50元,加2元换购百事可乐一瓶");
System.out.println("2-消费满100元,加3元换购500ml可乐一瓶");
System.out.println("3-消费满100元,加10元换购5公斤面粉");
System.out.println("4-消费满200元,加10元换购苏泊尔炒菜锅");
System.out.println("5-消费满200元,加20元换购欧莱雅爽肤水一瓶");
System.out.println("请选择.....");
choice=input.nextInt();
switch (choice) {
case 1:
if(cost>50) {
product="百事可乐一瓶";
add=2;
}else {
System.out.println("您的消费金额不足50元");
}
break;
case 2:
if(cost>50) {
product="500ml可乐一瓶";
add=3;
}else {
System.out.println("您的消费金额不足10元");
}
break;
case 3:
if(cost>100) {
product="5公斤面粉";
add=10;
}else {
System.out.println("您的消费金额不足100元");
}
break;
case 4:
if(cost>200) {
product="苏泊尔炒菜锅";
add=10;
}else {
System.out.println("您的消费金额不足200元");
}
break;
case 5:
if(cost>200) {
product="欧莱雅爽肤水";
add=20;
}else {
System.out.println("您的消费金额不足200元");
}
break;
default:
System.out.println("选择错误....");
break;
}
}else {
System.out.println("不参加换购活动");
}
//计算消费总金额
pay=cost+add;
System.out.println("您本次一共消费:"+pay);
System.out.println("您换购的产品为:"+product);
}
}
心得:提前将一些用到的变量写出来