Java第五天—— switch - case 与循环结构

1. switch - case

1.1 结构概述

(1)格式

switch(/* 变量 */) {
    case 常量选择1:
        //处理方式1;
        break;
    case 常量选择1:
        //处理方式2;
        break;
    case 常量选择1:
        //处理方式3;
        break;
    default:
        //最终处理方式;
        break;
}

(2) 说明

执行流程:
    代码运行到switch case结构
    首先去除switch之后小括号内中部变量保存的数据
    匹配switch大括号以内的case选择,找到对应的常量选择匹配:
      ① 如果找到匹配项,执行对应的处理方式。
      ② 如果没有找到匹配项,执行default里面的处理方式。
    【注】这里的 “ break  ” 关键字用于结束switch case运行

(3)演示示例

switch case 演示点菜 
    1. 北京烤鸭
    2. 重庆/四川火锅
    3. 擀面皮
    4. 烤羊排
    5. 佛跳墙(God Use VPN)

import java.util.Scanner;

class Demo4 {
	public static void main(String[] args) {
		
		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处理数据*/
		switch(choose) {
			//这里用于处理choose中数据为1的情况
			case 1:
				//处理方式1;
				System.out.println("五顺斋烤鸭");
				//跳出switch case结构
				break;
			case 2:
				//处理方式2;
				System.out.println("重庆/四川火锅");
				break;
			case 3:
				//处理方式3;
				System.out.println("擀面皮");
				break;
			case 4:
				//处理方式4;
				System.out.println("烤羊排");
				break;
			case 5:
				//处理方式5;
				System.out.println("佛跳墙(God Use VPN)");
				break;
			//以上所有的case都没有运行的情况下,会执行dfault	
			default:
				//最终处理方式;
				System.out.println("不好意思,没有你所点菜品");
				break;
		}	
	}
}

1.2 使用注意事项

  1. 在swith case 结构中,有且只能执行case或default之后的语句,如果存在case或default之外的语句,是无法执行的,对于Java而言是无效代码
  2. 在swith case 结构中,如果存在case或default选择中缺少break是,代码会继续执行到下一个break或者switch的大括号 } 终止switch case
  3. 在swith case 结构中,不允许出现相同的case选项,代码无法进行擦操作选择,因为所有case是平级的
  4. 在swith case 结构中,default可以省略,代码编译不会受影响,五语法错误,但是会失去switch case自带的一种异常处理方式。
  5. 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 循环结构

(1)格式

while (/* 循环条件 true /false */) {
    //循环体
    //(循环条件变更)
}

(2)说明

执行条件:
        当前程序运行到while循环机恶狗时,首先判断while之后的小括号里面的循环条件是否是true,如果为true,执行循环体,再回到循环条件判断,知道循环条件为false,终止循环。

(3)演示示例

示例1:
【题目】一周七天,内容为”吃饭睡觉打豆豆“
【分析】 期望执行的循环次数为7次   (< 8 或 <= 7)
 

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;
		}
		
		System.out.println("i : " + i);
	}
}

示例2:
【题目】用while循环结构展示数值1~100
 

class Demo7 {
	public static void main(String[] args) {
		//定义循环使用的变量i,int类型,初始化为1
		//循环使用变量名i
		int i = 1;
		
		while (i <= 100) {
			System.out.println("i : " + i);
            i += 1;
		}
	}
}

示例3:
【题目】用while循环结构展示数值1~100所有数值的和
 

class Demo8 {
	public static void main(String[] args) {
		//定义循环使用的变量i,int类型,初始化为1
		int i = 1;
		// 保存 1~100相加之和的变量
		int sum = 0;
		
		while (i <= 100) {
			sum += i;
			i += 1;
		}
		System.out.println("sum : " + sum);
		
		//利用循环可以解决问题,但是在开发过程中需要使用一些数学公式来提高我们的开发效率
		System.out.println((1 +100) * 50);
	}
}

2.3 do - while 循环结构

(1)格式

do {
    //循环体
    //(循环条件变更)
} while (/* 循环条件判断 */);

(2)说明

执行流程:
    到过程序执行到do-while循环结构时,首先执行一次循环体(循环条件变更),,再来判断while中循环条件是否为true,如果为true继续执行,如所谓false,终止循环
    【注意】
    1. while(condition);    这里有英文分号
    2. 执行do - while循环需要明确第一次循环会不会出现隐患

(3)演示示例

示例1:

【题目】使用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);
	}
}

示例2:

【题目】使用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);
	}
}

示例3:

【题目】使用do while循环展示大写字母A~Z

class Demo11 {
	public static void main(String[] args) {
		/*这里循环操作使用的是一个字符类型的变量
		需要定义一个变量 char类型,变量名ch
		*/
		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');
		
	}
}

示例4:

【题目】使用do while循环展示小写字母a~z

class Demo12 {
	public static void main(String[] args) {
		
		char ch = 'a';
		
		do {
			System.out.println("ch : " + ch);
			ch += 1;
		} while (ch <= 'z');
		
	}
}

2.4 循环和分支的嵌套

以实现一个简单的点菜功能来作为例子

(1)while循环结构方式

/*
使用while循环,完成一个点菜功能
	1. 完成用户的点菜功能
	2. 点菜之后输出总价
	3. 用户指定方式退出
*/
import java.util.Scanner;

class Demo13 {
	public static void main(String[] args) {
		/*这里需要一个变量int类型,作为用户的选择*/
		int choose = 0;
		/*
		计算得到总价格 int类型,变量名为total
		*/
		int total = 0;
		//准备一个Scanner类型的变量
		Scanner sc = new Scanner(System.in);
		
		/* 
		用户输入6终止循环,如果不是6,继续执行
		*/
		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. 下单");
		
		
		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 + " RMB");
		
	}
}

(2)do - while循环结构方式

/*
使用do-while循环,完成一个点菜功能
	1. 完成用户的点菜功能
	2. 点菜之后输出总价
	3. 用户指定方式退出
*/
import java.util.Scanner;

class Demo14 {
	public static void main(String[] args) {
		/*这里需要一个变量int类型,作为用户的选择*/
		int choose = 0;
		/*
		计算得到总价格 int类型,变量名为total
		*/
		int total = 0;
		//准备一个Scanner类型的变量
		Scanner sc = new Scanner(System.in);
		
		/* 
		用户输入6终止循环,如果不是6,继续执行
		*/
		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 + " RMB");
	}
}

3. 总结

  1. 循环过程中最核心的内容就是玄幻变量,需要对于循环变量的执行的过程中数值变量完全掌握!!!如果无法明确循环的次数,循环变量的值,循环的过程,可以将循环代码中的变量的变更过程记录
  2. 循环过程中需要注意无限循环问题,控制无限循环问题的出现。一定要保证循环条件有效性,或者代码中存在一个跳出循环的机制
  3. do-while循环中,第一次循环体的执行没有经过任何的条件判断,需要注意!【已知、可控】
  4. while和do-while循环结构是可以互换的。
  5. 如果在while和do-while之间考虑使用的情况下,一般推荐使用while循环,但是不代表do-while没有实际的使用效果。
发布了12 篇原创文章 · 获赞 1 · 访问量 296

猜你喜欢

转载自blog.csdn.net/Mr_SunJH/article/details/105587135