A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

H-Y-A

初级黑马

  • 黑马币:36

  • 帖子:11

  • 精华:0

这段时间的学习,我感觉switch···case···挺好玩的,我是小白,大家不要嘲讽我,我相信在大家的帮助下,我会越来越厉害的!
switch的格式:
switch(A){
case B:
        System.out.println();
break;
case C:
·
·
default:
         
}
在程序中,A的值必须是int型,或者是能够自动进行隐式转换成int型的表达式。也就是说A可以是byte、short、char、int型的。但是在该程序中B部分的值必须是单个byte、short、char、int型的,


对于下面的程序段:

public class Test_1 {
        public static void main(String[] args){
                byte a = 21;
                switch(a){
                case 21 : System.out.println(" 21 "); break;
                case 300 : System.out.println(" 300 "); break;
                }
        }
}

这个程序段是正确的吗?肯定是有错误的(因为byte的数据类型的范围是-128~127)。虽然在程序的语法是合法的,但是第二个case语句后的值是300,它的大小超过了byte的范围,所以是错误的。再就是case后的值不能出现重复。因此在使用中要注意。
      还有在使用switch···case···中最容易忽视的错误就是忘记在每个case后忘记写上break;语句(我犯了几次这样的错误了)。如果不加就会发生case穿透,但是case穿透并不是一无是处,
程序段:
class Test_2 {
        public static void main(String[] args){
                byte a = 2;
                switch(a){
                case 1 : System.out.println(" x ");
                case 2 : System.out.println(" y ");
                case 3 : System.out.println(" z ");
                default : System.out.println(" default ");
                }
        }
}
输出结果为:
x
y
z
default
所以连default都会执行,因此以后的代码一定不要忘记加上break ;语句,切记!!!。
我所要表达的虽然很简单的问题,但是,有时候好多人不会注意;
case穿透好处:
题目:
       (1)根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入
        (2)涨工资的条件如下:
                [10-15)     +5000
                [5-10)      +2500
                [3~5)       +1000
                [1~3)       +500
                [0~1)       +200
        (3)如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元"

程序段:
class Test_3 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入工龄:");
                int  age = sc.nextInt();
                System.out.println("请输入基本工资:");
                int  money = sc.nextInt();
switch (age) {

        case 0 :
                System.out.println("您目前工作了"+ age +"年,基本工资为:" + money + "元, 应涨工资 200元,涨后工资" +(money + 200) + "元");
        break;
        case 1 :
        case 2 :
       
                System.out.println("您目前工作了"+ age +"年,基本工资为:" + money + "元, 应涨工资 500元,涨后工资" +(money + 500) + "元");
        break;
        case 3 :
        case 4 :
                System.out.println("您目前工作了"+ age +"年,基本工资为:" + money + "元, 应涨工资 1000元,涨后工资" +(money + 1000) + "元");
        break;
        case 5 :
        case 6 :
        case 7 :
        case 8 :
        case 9 :
                System.out.println("您目前工作了"+ age +"年,基本工资为:" + money + "元, 应涨工资 2500元,涨后工资" +(money + 2500) + "元");
        break;
        case 10 :
        case 11 :
        case 12 :
        case 13 :
        case 14 :
                System.out.println("您目前工作了"+ age +"年,基本工资为:" + money + "元, 应涨工资 5000元,涨后工资" +(money + 5000) + "元");
        break;
        default :
                System.out.println("请输入正确的工龄和工资");

}


}}

很巧妙的利用了case穿透,达到想要的目的

3 个回复

正序浏览

谢谢你的鼓励
回复 使用道具 举报
顶!,加油!
回复 使用道具 举报
赞你一个,加油吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马