选择结构之——switch语句

switch语句

结构

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

执行原理:
程序由上到下执行,首先执行小括号中的表达式,得出一个常量值,然后再执行后续的case语句,如果表达式中的常量值与某个case语句中的常量的值匹配上了即两个常量值相等。那么就会执行对应case后面的语句,遇到break语句后就跳出整个switch结构,这时候switch结构就会终止执行;如果表达式中的常量值与任何一个case后面常量的值都匹配不上,那么程序就会执行default语句中的语句。
switch语句中可以省略break,不过这样switch语句就会一直执行到最后一条语句。
也可以省略default语句如果表达式中的常量值与任何一个case后面常量的值都匹配不上并且程序中没有编写default语句那么switch语句就会终止执行。
在JDK6.0以前(包括JDK6.0)switch后面的表达式的计算结果只允许是int或者与int等价的数据类型(byte、short、int、char),但是在JDK7.0以后表达式的值也可以是String类型。

【例题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=xy-x=34-3=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选项正确。

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

package com.jinglan.select;

import java.util.Scanner;

public class Exercise_Switch {
    
    
	public static void main(String[] args) {
    
    
		System.out.println("请输入1-7之间的任意一个数字:");
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		switch (num) {
    
    
		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()将字符串全部转换为小写

package com.jinglan.select;

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("单词输入错误!");

		
		}

	}

}

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

猜你喜欢

转载自blog.csdn.net/muyuxifeng/article/details/112741133