程序员入门之swtich case和循环结构

switch case和循环结构

1. switch case

1.1 结构概述
/* 
	这里使用的switch - case结构是一个可以在很多开发语言中通用使用的
 今天上课演示使用的数据类型是int类型,并且要求在没有讲述其他可以使用类型之前
 只能使用int
*/
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,终止循环!!!
*/
/*
一周七天
	吃饭睡觉打豆豆
	期望执行的循环次数为7次
	1 
		<= 7
		< 8
*/
class Demo6 {
	public static void main(String[] args) {
		// 定义一个循环使用的变量,int整数类型
		// 变量名 i,初始化数据为1
		int i = 1;
		
		/*
		循环操作中如果循环使用的变量没有变更,是存在
		可能当前循环成为一个【无限循环】,Ctrl + C 
		*/
		while (i <= 7) {
			System.out.println(i + ":吃饭睡觉打豆豆");
			
			// 循环条件变更,修改循环使用的变量
			i += 1; // i++; ++i;
		} 
		
		System.out.println("i = " + i);
	}
}
/*
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;
		}
	}
}
/*
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,终止循环。
【注意】
	1. while(condition);;;;;;;;;;;;;;;;;;;;;;;;;;; 这里英文分号
	2. 执行do - while需要明确第一次循环会不会存在隐患
*/
/*
使用do - while循环,展示1 ~ 100 所有的偶数
*/
class Demo9 {
	public static void main(String[] args) {
		/*
		定义一个循环变量 i. int数据类型,初始化为1
		*/
		int i = 1;
		
		/*
		循环执行 100次
		if分支结构判断执行 100次
		
		总时间 200单位时间
		*/
		do {
			// 嵌套了一个if分支,条件判断
			if (i % 2 == 0) {
				System.out.println("i = " + i);
			}
			
			i += 1;
		} while (i <= 100);
		
		System.out.println("--------------------------");
		
		int j = 2;
		
		/*
		循环执行 50 次
		
		总时间 50单位时间
		*/
		do {
			System.out.println("j = " + j);
			j += 2;
		} while (j <= 100);
	}
}
/*
使用do - while循环
	完成 1 ~ 150的和
*/
class Demo10 {
	public static void main(String[] args) {
		/*
		这里需要一个循环变量i,为int类型,初始化数据为1
		*/
		int i = 1;
		/*
		这里还需要一个变量,名字叫做sum,int数据类型,
		初始化为0
		*/
		int sum = 0;
		
		do {
			sum += i;
			i += 1;
		} while (i <= 150);
		
		System.out.println("sum = " + sum);
	}
}
/*
使用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');
	}
}
/*
使用do - while循环
	展示小写字母a ~ z
*/
class Demo12 {
	public static void main(String[] args) {
		/*
		char类型的变量,变量名ch,初始化数据为 'a'
		*/
		char ch = 'a';
		
		do {
			System.out.println("ch : " + ch);
			ch += 1;
			// ch++; ++ch;
		} while (ch <= 'z');
	}
}
2.4 循环和分支的嵌套
完成一个点菜功能
	while
	
	do - while
/*
使用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);
	}
}
/*
使用do - while循环,完成一个点菜系统
	1. 完成用户的点菜功能
	2. 点菜之后输出总价
	3. 用户指定方式退出
*/
import java.util.Scanner;

class Demo14 {
	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. 下单");
		
		do {
			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;
			}
		} while (choose != 6);
		
		System.out.println("本场消费 : " + total);
	}
} 
总结
1. 循环过程中最核心的内容就是循环变量,需要对于循环变量的执行的过程中数值变量完全掌握!!!如果无法明确循环的次数,循环变量的值,循环的过程,可以将循环代码中变量的变更过程记录。

2. 循环过程中需要注意无限循环问题,控制无限循环问题的出现。一定要保证循环条件有效性或者代码中存在一个跳出循环的机制。

3. do while循环中,第一次循环体的执行是没有经过任何的条件判断的,需要注意!
【已知,可控】

4. while和do while循环结构是可以进行互换的。

5. 然后在while和do while之间考虑使用的情况下,一般推荐使用while循环。但是不代表do while没有实际的使用效果。
发布了7 篇原创文章 · 获赞 0 · 访问量 73

猜你喜欢

转载自blog.csdn.net/weixin_44310465/article/details/105591160