Java_Day5:学习笔记和收获

Switch case 和循环结构

1. switch case

/* 
	这里使用的switch - case结构是一个可以在很多开发语言中通用使用的
*/
switch (/* 变量 */) {
    case 常量选择1:
        // 处理方式1;
        break;
    case 常量选择2:
        // 处理方式2;
        break;
    case 常量选择3:
        // 处理方式3;
        break;
    default:
        // 最终处理方式;
        break;
}
/*
执行流程:
	代码运行到switch case结构
	首先取出switch之后小括号中变量保存的数据
	匹配switch 大括号以内的case选择,找到对应的常量选择匹配。
		如果找到了对应的匹配选择,执行对应的处理方式。
		如果没有找到匹配选择,执行default里面的处理方式。
	这里【break】关键字用于结束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 Use VPN)");
		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 Use VPN) 998RMB");
				break;
			// 以上所有的Case都没有运行的情况下,会执行default
			// 保留的处理方式
			default:
				System.out.println("不好意思,您选择错误!!!");
				break;
		}		
	}
}
1.2 switch - case使用注意事项
1. 在switch - case结构中,有且只能执行case,或者default之后的语句。如果存在在case 和default之外的语句,是无法执行的,对于Java而言是无效代码。
	报错:unreachable code

2. 在switch - case结构中,如果存在case或者default选择缺少break操作。代码会继续运行到下一个break,或者大括号 }(switch case结尾大括号) 终止switch - case!!

3. 在switch - case结构中,不允许出现相同的case选项,代码无法进行操作选择,因为所有case选择是平级的

4. 在switch - case结构中,default可以省略,代码编译不会受到影响,没有语法错误。但是失去switch case自带的一种异常情况处理方式。
	AJCG阿里巴巴Java开发规范中,是不推荐省略default
1.3 总结
1. switch case结构和if else if 结构类似,两者是可以互通
2. if else if结构中可以处理范围性数据,处理的数据区间更加广泛
3. switch case处理数据明确性更强,处理针对性选择比较合适

2.循环结构

2.1 为什么要用循环
代码中一定存在需要循环出现的情况,如果不使用循环,会导致以下一些问题
	1. 阅读性极差!!!
	2. 维护性极差!!!
	3. 代码冗余!!!
2.2 while 循环
while(/*循环条件 true or false */) {
  //循环体
  //(循环条件变更)
}
/*
执行流程:
	当前程序运行到 while 循环结构时,首先判断while之后的小括号里面条件是否为 true,如果为 true,执行循环体,再回到循环条件判断,知道循环条件为 false,终止循环
*/
/*
while 循环结构
	展示数值 1 ~ 100 所有数值的和
*/
class Demo8 {
	public static void main(String[] args) {
		// 循环使用的变量,int类型,变量名 i 初始化为 1
		int i = 1;
		// 保存1 ~ 100相加之和的变量 sum
		int sum = 0;
		
		// 利用while循环
		while (i <= 100) {
			sum += i;
			i += 1;		
		}
		
		System.out.println("Sum : " + sum);
		
		// 利用循环可以解决问题,但是在开发中是需要使用一些数学公式
		// 来提高我们的开发效率
		System.out.println((1 + 100) * 50);
	}
}
2.3 do-while 循环
do {
	//循环体
  //(循环条件变更)
} while(/* 循环条件判断 */);
/*
执行流程:
	当程序执行到 do-while 循环结构时,首先执行一次循环体(循环条件变更),在执行 while 中的循环条件判断是否为 true,为 true,继续执行,如果为 false,终止循环。

「注意」
	while(condition);;;;;;; 这里一个英文分号一定记住
	执行 do-while 需要明确第一次循环会不会存在隐患
*/
/*
使用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 = ch + 1; 错误操作,并且不推荐强制类型转换
			// 1 默认是一个int类型,char类型数据+int类型数据 ==> int类型
			// ch 是一个char类型,无法保存一个int类型数据,没有做到【数据类型一致化要求】
		} while (ch <= 'Z');
	}
}
2.4 循环和分支的嵌套
/*
使用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. 1664 18RMB");
					total += 18;
					break;
				case 6:
					System.out.println("6. 下单");
					break;
				default:
					System.out.println("选择错误");
					break;
			}
		}	

		System.out.println("本场消费 : " + total);
	}
}
2.5 总结
1.循环过程中最核心的内容就是循环变量,需要对于循环变量的执行过程的数值变化完全掌握。如果无法明确循环的次数,循环变量的值,循环的过程,可以将循环代码中变量的变更记录下来
2.循环过程中需要注意无限循环问题,避免无限循环问题的出现,一定要保证循环条件的有效性或者代码中有跳出循环的机制
3.do-while 循环中,第一次循环体的执行是没有经过任何条件判断的,需要注意!!
4.while 和 do-while 循环结构是可以互换的
5.在 while 和 do-while 之间考虑使用,一般推荐 while 循环,但不代表 do-while 没有实际使用效果

3.收获

拼搏到无能为力,坚持到感动自己
	1.掌握了 switch case 和2中循环结构【while】、【do while】
	2.有一些问题可以用循环解决,但是如果有更高效的公式或方法,尽量不要使用循环,影响性能
	3.学习了利用分支结构和循环的嵌套解决一些实际的问题
	4.在 while 和 do while 两种循环结构中,while 相对更严谨,因为每一次循环体的执行都经过了条件判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值