switch 和循环结构
2020-04-17 本文已影响0人
Forachange
switch case
格式:
switch (变量) {
case 常量1:
处理方式1;
break;
case 常量2:
处理方式2;
break;
……
case 常量n:
处理方式n;
break;
defalt :
默认处理方式;
break;
}
总结:
1.拿小括号里的变量与大括号里的常量进行匹配,匹配成功执行相应的处理方式,否则执行default的处理方式。
2.不能出现重复的case常量,否则无法判断执行哪一个case的处理方式,会报错,因为switch里面所有的case都是同级的。
3.break是用来结束整个switch case语句的运行的,如果漏写了会出现case穿透,switch case 语句会继续运行,直到遇到 break或者大括号}结束。
4.switch case 结构和if else if结构相似,if else if 适合与处理范围性数据,switch case 适合处理针对性数据
/*
switch case 演示点菜
1. 五顺斋烤鸭
2. 重庆/四川火锅
3. 擀面皮
4. 烤羊排
5. 佛跳墙(God Use VPN)
*/
import java.util.Scanner;
class Demo4 {
public static void main(String[] args) {
// 这里需要一个int类型的变量 变量名choose
int choose = 0;
Scanner sc = new Scanner(System.in);
// 展示菜单
System.out.println("欢迎来到骚磊米其林十二星餐厅");
System.out.println("1. 五顺斋烤鸭");
System.out.println("2. 重庆/四川火锅");
System.out.println("3. 擀面皮");
System.out.println("4. 烤羊排");
System.out.println("5. 佛跳墙(God UseVPN)");
choose = sc.nextInt();
// 使用switch case处理数据, 需要处理的数据是保存在 choose变量中,switch case结构对于choose进行处理
switch (choose) {
// case 1 这里是用于处理choose中数据为1的情况
case 1:
// 处理方式
System.out.println("五顺斋烤鸭82RMB");
// 跳出switch case结构
break;
case 2:
System.out.println("重庆/四川火锅180RMB");
break;
case 3:
System.out.println("擀面皮 5RMB");
break;
case 4:
System.out.println("烤羊排 65RMB");
break;
case 5:
System.out.println("佛跳墙(God UseVPN) 998RMB");
break;
// 以上所有的Case都没有运行的情况下,会执行 default
// 保留的处理方式
default:
System.out.println("不好意思,您选择错误!!!");
break;
}
}
}
循环结构
while 循环和do while 循环
while循环是先判断看是否执行循环体,do while 循环是先执行一次循环体再进行判断是否继续执行循环体
格式:
while (判断语句) {
循环体;
控制循环变量的语句;
}
do {
循环体;
控制循环变量的语句;
} while (判断语句);
演示:
while循环结构
展示数值 1 ~ 100
*/
class Demo7 {
public static void main(String[] args) {
// 定义循环使用的变量,int类型,初始化为1
// 循环使用的变量名 i
int i = 1;
while (i <= 100) {
System.out.println("i : " + i);
i += 1;
}
}
}
/*
使用do - while循环展示大写字母A ~ Z
*/
class Demo11 {
public static void main(String[] args) {
/*
这里循环操作使用的是一个字符类型的变量需要定义一个变量 char类型 变量名叫做 ch初始化数为'A'
*/
char ch = 'A';
do {
System.out.println("ch : " + ch);
ch += 1;
/*
正确操作 计算机会自动完成数据转换过程,保证ch是char类型自增操作,也是同类型自增
ch = ch + 1; 错误操作,并且不推荐强制类型转换
1 默认是一个int类型,char类型数据+int类型数据 ==> int类型
ch 是一个char类型,无法保存一个int类型数据,没有做到【数据类型一致化要求】
*/
} while (ch <= 'Z');
}
}
循环和分支的嵌套
可以先写好一个循环语句,然后把分支语句放到循环体的位置
演示:
/*
使用while循环,完成一个点菜系统
1. 完成用户的点菜功能
2. 点菜之后输出总价
3. 用户指定方式退出
*/
import java.util.Scanner;
class Demo13 {
public static void main(String[] args) {
/*
这里需要一个变量 int类型,作为用户的选择变量名 choose
*/
int choose = 0;
/*
计算得到总价格,int类型,变量名为 total
*/
int total = 0;
/*
准备一个Scanner类型的变量,用于从键盘上获取用户输入的数据
*/
Scanner sc = new Scanner(System.in);
System.out.println("欢迎来到骚磊老酒馆");
System.out.println("1. 青岛啤酒 8RMB");
System.out.println("2. 野格 88RMB");
System.out.println("3. 江小白 25RMB");
System.out.println("4. 乌苏 6RMB");
System.out.println("5. 1664 18RMB");
System.out.println("6. 下单");
/*
用户输入6终止循环,如果不是6,继续循环
*/
while (choose != 6) {
choose = sc.nextInt();
switch (choose) {
case 1:
System.out.println("1. 青岛啤酒8RMB");
total += 8;
break;
case 2:
System.out.println("2. 野格88RMB");
total += 88;
break;
case 3:
System.out.println("3. 江小白25RMB");
total += 25;
break;
case 4:
System.out.println("4. 乌苏6RMB");
total += 6;
break;
case 5:
System.out.println("5. 166418RMB");
total += 18;
break;
case 6:
System.out.println("6. 下单");
break;
default:
System.out.println("选择错误");
break;
}
}
System.out.println("本场消费 : " + total);
}
}
循环过程中需要注意无限循环问题,控制无限循环问题的出现。一定要保证循环条件有效性或者代码中存在一个跳出循环的机制。