Java——switch语句的运用

  • switch语句
  • switch_case
  • 附:输入中的Scanner


switch语句

switch_case

在Java中有多种分支结构,单分支,双分支,多分支,嵌套分支等。在多分支结构中除了{if…elseif…else}语句外还有一种switch语句,不同于if在范围内判断,switch多用在需要进行 等值判断 的地方。

在switch语句中,值得注意的是:(1)各个case中的值不可相同,(2)default是可选项。

  • 针对元音辅音,给出不同的输出答案
public class Eng{ 	public static void main(String[] args){ 		int
random = (int)(Math.random()*26); 		//采用随机数获取26个字母位数 		char ch =
(char)('a'+random); 		//由于char是ascII编码,所以可以当成int来处理 		//以a为首位字母
		switch(ch){ 			case 'a': 			System.out.println("元音"+ch); 			case
'u': 			System.out.println("元音"+ch); 			case 'e':
			System.out.println("元音"+ch); 			case 'i':
			System.out.println("元音"+ch); 			case 'o':
			System.out.println("元音"+ch);
			 			default: 			System.out.println("辅音"+ch);
			 		} 	} 	 } ```

运行结果:

javaswitch选择 java swich语句_java


可以注意到,在辅音的时候,输出正确,而在元音的时候则输出有问题

这是因为switch语句是从上往下依次执行的,在执行完case之后又会执行default语句。为了解决这种问题的出现,我们引入break语句,用其来跳出switch语句,结束向下执行的过程。改动如下:

public class Eng{ 	public static void main(String[] args){ 		int
random = (int)(Math.random()*26); 		//采用随机数获取26个字母位数 		char ch =
(char)('a'+random); 		//由于char是ascII编码,所以可以当成int来处理 		//以a为首位字母
		switch(ch){ 			case 'a': 			System.out.println("元音"+ch); 			break;
			case 'u': 			System.out.println("元音"+ch); 			break; 			case 'e':
			System.out.println("元音"+ch); 			break; 			case 'i':
			System.out.println("元音"+ch); 			break; 			case 'o':
			System.out.println("元音"+ch); 			break;
			 			default: 			System.out.println("辅音"+ch);
			 		} 	}

} ```

运行结果:

javaswitch选择 java swich语句_javaswitch选择_02


可以看到这样运行的话就没有问题了

但是这样输入的话,代码就显得非常冗余,在元音的时候case后的代码都是一样的,为了让代码更加精简,我们可以将其简化,让它先顺序执行case后,再进行输出语句操作。具体代码如下:

public class Eng{ 	public static void main(String[] args){ 		int
random = (int)(Math.random()*26); 		//采用随机数获取26个字母位数 		char ch =
(char)('a'+random); 		//由于char是ascII编码,所以可以当成int来处理 		//以a为首位字母
		switch(ch){ 			case 'a': 			case 'u': 			case 'e': 			case 'i':
			case 'o': 			System.out.println("元音"+ch); 			break;
			 			default: 			System.out.println("辅音"+ch);
			 		} 	} 	 } ```

运行结果:

javaswitch选择 java swich语句_javaswitch选择_03


可以看到现在的运行结果也没有任何问题。

这样就从根本上解释了,为什么相关的执行语句不放在第一个case后,而是放在最后一个同类型的之后。在有多个不同执行语句的时候,分类放在各类最后一个case之后。具体代码如下:

public class Eng{ 	public static void main(String[] args){ 		int
random = (int)(Math.random()*26); 		//采用随机数获取26个字母位数 		char ch =
(char)('a'+random); 		//由于char是ascII编码,所以可以当成int来处理 		//以a为首位字母
		switch(ch){ 			case 'a': 			case 'u': 			case 'e': 			case 'i':
			case 'o': 			System.out.println("元音"+ch); 			break;
			 			case 'y': 			case 'w': 			System.out.println("半元音"+ch); 			break;
			 			default: 			System.out.println("辅音"+ch);
			 		} 	} 	 } ```



附:输入中的Scanner

Scanner: java中需要导入相应的包来实现输入操作,不像输出那样可以直接用System.out.println();
具体使用如下:

import java.util.Scanner;

public class Demo{
	public static void main (String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入数据");
		String str = sc.nextLine();
		//读取下一整行的输入数据,相关的读取操作在api手册里可以查看
		//同时,对于nextline读取回的都是字符串类型,需要进行类型转换,如果是nextdouble这种的话就不需要
		System.out.println(str);
	}
}