选择结构之——switch语句

基本语法格式

switch(表达式){
         case 常量1:
                 语句1;
                 break;
         case 常量2: 
                 语句2;
                 break;
         ...
         default:         
                 执行语句n;
                 break;
}

程序执行原理:

程序由上到下执行,首先执行小括号中的表达式,得出一个常量值,将这个常量值与每个case语句后面的常量值进行匹配。如果与某个case语句中的常量值匹配上了(即两个常量值相等),那么就会执行对应case语句后面的语句,执行完语句后遇到break语句从而跳出整个switch结构,这时候switch结构就会终止执行;如果表达式中的常量值与任何一个case语句后面常量值都匹配不上,那么程序就会执行default后面的执行语句。

【案例1】:
从键盘输入1-7之间的任意数字,分别输出对应的信息
1——星期一
2——星期二
3——星期三
4——星期四
5——星期五
6——星期六
7——星期日

import java.util.Scanner;
public class SwitchDemo{
	public static void main(String []args){
		//判定星期的案例
		System.out.println("请输入1~7之间的任意一个数字:");
		Scanner sc = new Scanner(System.in);
		int weekDay = sc.nextInt();//从键盘获取用户输入
		switch(weekDay){
			case 1:
				System.out.println("星期一");
				break;
			case 2:
				System.out.println("星期二");
				break;
			case 3:
				System.out.println("星期三");
				break;
			case 4:
				System.out.println("星期四");
				break;
			case 5:
				System.out.println("星期五");
				break;
			case 6:
				System.out.println("星期六");
				break;
			case 7:
				System.out.println("星期日");
				break;
			default:
				System.out.println("输入错误,请输入一个1~7的数字!");
		}	
	}
}

运行结果示例
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
【案例2】
与【案例1】做一个类似比较体会一下,顺便认识两个方法toUpperCase()将字符串全部转换为大写,toLowerCase()将字符串全部转换为小写

import java.util.Scanner;
public class Exercise_Switch {
	public static void main(String[] args) {
		System.out.println("请输入表示星期的英文单词:");
		Scanner sc = new Scanner(System.in);
		String week = sc.next();
		/*
		 * 用户在输入表示星期的英文单词时,有输小写的,有输入大写的,有输入大小写混合的,为了统一
		 * 调用toLowerCase()方法将输入的单词全部转换为小写从而好与case中的相匹配
*/		
		week=week.toLowerCase();//把字符串中的字符全部改为小写
		switch (week) {
		case "monday":
			System.out.println("星期一");
			break;
		case "tuesday":
			System.out.println("星期二");
			break;
		case "wednesday":
			System.out.println("星期三");
			break;
		case "thursday":
			System.out.println("星期四");
			break;
		case "friday":
			System.out.println("星期五");
			break;
		case "saturday":
			System.out.println("星期六");
			break;
		case "sunday":
			System.out.println("星期日");
			break;
		default :
			System.out.println("单词输入错误!");
		}
	}
}

运行结果
在这里插入图片描述

注意事项

注意事项1
switch语句中的表达式只能是byte、short、int、char、enum枚举、String类型的值,如果传入其他类型的值,程序会报错。
其中byet、short、int、char是在JDK1.6之前包括JDK1.6引入的,enum是JDK1.5引入的、String是JDK1.7引入的。

注意事项2
switch语句中可以省略break。如果省略掉所有的break,当表达式中的常量值与某个case语句中的常量值匹配到时,最终会从该case语句一直执行到最后一条语句

【案例2】

import java.util.Scanner;
public class SwitchDemo{
	public static void main(String []args){
		//判定星期的案例
		System.out.println("请输入1~7之间的任意一个数字:");
		Scanner sc = new Scanner(System.in);
		int weekDay = sc.nextInt();//从键盘获取用户输入
		switch(weekDay){
			case 1:
				System.out.println("星期一");
				
			case 2:
				System.out.println("星期二");
				
			case 3:
				System.out.println("星期三");
				
			case 4:
				System.out.println("星期四");
				
			case 5:
				System.out.println("星期五");
				
			case 6:
				System.out.println("星期六");
				
			case 7:
				System.out.println("星期日");
				
			default:
				System.out.println("输入错误,请输入一个1~7的数字!");
		}	
	}	
}

运行结果示例
在这里插入图片描述
在这里插入图片描述
注:如果只是去掉某一个或者某几个break,程序也会遵循同样的原则,只有遇到break时才会跳出switch语句,否则就会一直执行到最后一条语句。

习题

【例题1】
下列语句执行后,z的值为?(选择一项)

int x=3,y=4,z=0;
switch(x%y+2){
case 0 : 
	z=x*y;
	break;
case 6 :
	z=x/y;
	break;
case 12 :
	z=x-y;
	break;
default :
	z=x*y-x;
}

A:15
B:0
C:-2
D:9


解析:本题考查switch结构,x%y+2的值为5,没有匹配的case语句,故执行default语句, z = x ∗ y − x = 3 ∗ 4 − 3 = 9 z=x*y-x = 3*4-3=9 z=xyx=343=9

【例题2】
下列语句序列执行后,r的值是?(选择一项)

char ch='8';
int r=10;
switch(ch+1){
case '7' : 
	r=r+3;
case '8' :
	r=r+5;
case '9' :
	r=r+6;
break;
default : r=r+8
}

A:13
B:15
C:16
D:18


解析:本题考查switch结构,关键点在于switch后面表达式值的计算,字符char在与int类型的数据进行计算的时候会自动转换为int类型
表达式ch+1其实就是 ‘8’+1 = 56+1=57,后续的多个case中只有’9’的转换为int类型后的值为57能与之相匹配上,所以会执行r=r+6得出r=16
当想要知道char类型的数据例如:'9’转换成int类型的值为多少时可以使用代码测试

char ch = '9';
System.out.println(ch+0);//最终的计算结果确实为57

【例题3】下列语句序列执行后,k 的值是? (选择一项)

int x=6,y=10,k=5;
switch(x%y){
case 0:
	k=x*y;
case 6:
	k=x/y;
case 12:
	k=x-y;
default :
	k=x*y-x;
}

A:60
B:5
C:0
D:54


解析:本题考查switch结构,x%y的值为6,执行case 6,k=6/10=0,没有结束语句,继续执行case12,k=x-y=-4,没有结束语句,继续执行default语句,k=x*y->x=60-6=54。故最终k的值为54,D选项正确。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立志Java工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值