赞
踩
常见用法如下:
import java.util.Scanner; public class A { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int score = sc.nextInt(); if (score > 100 && score < 0){ System.out.println("输入错误"); return ; }//作为一个程序员该有的思想 switch(score / 10){ case 10: case 9: System.out.println("优秀"); break; case 8: System.out.println("良好"); break; case 7: System.out.println("中等"); break; case 6: System.out.println("及格"); break; default : System.out.println("不及格"); break; } } }
注意:
1、switch后的变量支持int及以下(char,short,byte),String,Enum,必须要赋初值,也可以这样赋值switch(score = 0)
;
switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。
另一种说法
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long、float、double类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
注意:String类型是Java7开始支持的。
2、case之后的值必须和switch变量的类型一致;
3、default的用法:在没有匹配到的情况或匹配到的代码块没有break,就会执行default代码;
通俗的讲,default是在没有 case 语句的值和变量值相等的时候执行;
4.switch后的变量还可以做运算。
break的常见应用情况:(在需要的时候别忘了加break)
1、case中两个或多个值进行一样的操作。
import java.util.Scanner; public class B { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int month = sc.nextInt(); if (month < 1 && month > 12){ System.out.println("输入错误"); } switch (month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println(31); break; case 4: case 6: case 9: case 11: System.out.println(30); break; case 2: System.out.println(29); break; default: System.out.println("输入错误"); } } }
2、case语句没有break时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。
public int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
3、如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。(掉过坑)
案例如下:
public int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
break;
case 3:
result = result + i * 3;
}
return result;
翻车现场:
public class Demo { public static void main(String args[]) { char c = 'A' ; int num = 10 ; switch(c) { case 'B' : num ++ ; case 'A' : num ++ ; case 'Y' : num ++ ; break ; default : num -- ; } System.out.println(num) ; } }
当时把这条情况给忘了,想着匹配’A’之后,向下执行default语句,结果为10;但是现实是残酷的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。