一、先了解switch语句的功能,和实用条件有哪些?
解:switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的,如果条件是1,那么case 0还是会跳过,但是从1开始往后都会被执行:2会、如果有3、4、5都会被执行,直到遇到break或者跑出Switch.
使用switch语句时候要注意一下两点:
1、其它的任何类型都不可以.如String,boolean,Object等switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。
2、使用java的switch语句要注意每个case后面有一个break;否则会发生switch穿透现象。假如你的代码里面一个break都没有,所以会依次向下执行,直到最后。如果default放到最后的话,里面没有返回语句,和你方法的声明不相符合,所以语法错误。
因此在使用switch时候最好:
1、在每一个case后面加上一个break;
2、在最后加上default,这样更加安全和规范。
二、举个switch...例子:输入一个(范围在1至100之间的int型数字),然后于你所输入的数来判断,这个数年龄的人的×××是什么?并且把满足属此×××的数(范围在1至100之间的int型数字)全部输出。
package com.cn;
import java.util.Scanner;
public class Zuoye {
static void fun(int k){//定义一个fun的方法,并且实现算法
for(int i=1;i<=100;i++){
if(i%12 == k){
System.out.print(i+" ");
}
}
System.out.println();
}
public static void main(String[]args){
Scanner s=new Scanner(System.in);//从控制台输入数值(信息:表示可以是字符串类型)
int a ;
while(true){
System.out.println("请输入数字:");
a=s.nextInt();//把控制台输入的值赋值给a
while(!(a>=1&&a<=100)){
System.out.println("无效年龄,重新输入:");
a = s.nextInt();
}
switch(a%12){
case 0:
System.out.print(a+"岁属蛇 , 属蛇的年龄有:");
break; //跳出整个循环
case 1:
System.out.print(a+"岁属 龙, 属龙的年龄有:");
break;
case 2:
System.out.print(a+"岁属兔 , 属兔的年龄有:");
fun(a%12);
break;
case 3:
System.out.print(a+"岁属虎 , 属虎的年龄有:");
break;
case 4:
System.out.print(a+"岁属牛 , 属牛的年龄有:");
break;
case 5:
System.out.print(a+"岁属鼠 , 属鼠的年龄有:");
break;
case 6:
System.out.print(a+"岁属 猪, 属猪的年龄有:");
break;
case 7:
System.out.print(a+"岁属 狗, 属狗的年龄有:");
break;
case 8:
System.out.print(a+"岁属鸡 , 属鸡的年龄有:");
break;
case 9:
System.out.print(a+"岁属猴 , 属猴的年龄有:");
break;
case 10:
System.out.print(a+"岁属羊, 属羊的年龄有:");
break;
case 11:
System.out.print(a+"岁属马 , 属马的年龄有:");
break;
}
fun(a%12);//直接调用fun方法,输出满足所对应×××全部值,并且降低了代码的冗余
}
}
}