分支结构:switch-case
1.格式
switch(表达式){
case 常量1:
执行语句1;
case 常量2:
执行语句2;
……
defalut:
执行语句n;
//break
}
2.说明
1)根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此末尾结束为止。
2)break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch结构。
3)switch结构中的表达式,只能是以下六种类型之一:byte、short、char、int、枚举类型(jdk5.0新增类型)、String(jdk7.0新增类型)。
4)case之后只能声明常量,不能声明范围。只能是==的关系。不能判断布尔类型(如 case(a>3):)
5)break关键字是可选的。
6)default相当于if-else的else。efault结构是可选的。位置灵活,可放在末尾,可放在开头,也可放在几个case中间。先看case,再看default,看完default再往下走。不想往下走加上break。
例1:
代码实现:
class SwitchCaseTest{
public static void main(String[] args){
int num=2;
switch(num){
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
default:
System.out.println("other");
}
}
}
编译实现:
------------恢复内容开始------------
分支结构:switch-case
1.格式
switch(表达式){
case 常量1:
执行语句1;
case 常量2:
执行语句2;
……
defalut:
执行语句n;
//break
}
2.说明
1)根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此末尾结束为止。
2)break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch结构。
3)switch结构中的表达式,只能是以下六种类型之一:byte、short、char、int、枚举类型(jdk5.0新增类型)、String(jdk7.0新增类型)。
4)case之后只能声明常量,不能声明范围。只能是==的关系。不能判断布尔类型(如 case(a>3):)
5)break关键字是可选的。
6)default相当于if-else的else。efault结构是可选的。位置灵活,可放在末尾,可放在开头,也可放在几个case中间。先看case,再看default,看完default再往下走。不想往下走加上break。
例1:
代码实现:
class SwitchCaseTest{
public static void main(String[] args){
int num=2;
switch(num){
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
default:
System.out.println("other");
}
}
}
编译实现:
例2:使用switch把小写类型的char型转为大写,只转换a,b,c,d,e,其余的输出"other"
提示:String word=scan.next(); char c=word.charAt(0); swicth(c){}
还没做
例3:对学生成绩大于60分的,输出“合格“,低于60分的,输出“不合格“。
代码实现:
class SwitchCaseTest{
public static void main(String[] args){
int score = 70;
switch(score / 10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("及格");
break;
}
}
}
说明:如果switch-case结构中的多个执行语句相同,可考虑进行合并。
编译实现:
例4:根据用于指定月份,打印该月份所属的季节。
3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季
代码实现:
class SwitchCaseTest{
public static void main(String[] args){
int season = 2;
switch(season){
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
}
}
}
编译实现:
例5:编写程序:从键盘上输入2019年的"month"和“day”,要求输出的日期为2019年的第几天。(日积月累)
方法1代码:
import java.util.Scanner;
class SwitchCaseTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的月份:");
int month = scan.nextInt();
System.out.println("请输入你的天数:");
int day = scan.nextInt();
int sumDays = 0;
switch(month){
case 1:
sumDays = day;
break;
case 2:
sumDays = 31 + day;
break;
case 3:
sumDays = 31 + 28 + day;
break;
case 4:
sumDays = 31 + 28 + 31 +day;
break;
...
}
System.out.print("2019年"+month+"月"+day+"日是当年的第"+sumDays+"天");
}
}
方法2代码:(这种方法不需要用break,还省时)
import java.util.Scanner;
class SwitchCaseTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的月份:");
int month = scan.nextInt();
System.out.println("请输入你的天数:");
int day = scan.nextInt();
int sumDays = 0;
switch(month){
case 12:
sumDays += 30;
case 11:
sumDays += 31;
case 10:
sumDays += 30;
case 9:
sumDays += 31;;
case 8:
sumDays += 31;
case 7:
sumDays += 30;
case 6:
sumDays += 31;
case 5:
sumDays += 30;
case 4:
sumDays += 31;
case 3:
sumDays += 28;
case 2:
sumDays += 31;
case 1:
sumDays += day;
}
System.out.print("2019年"+month+"月"+day+"日是当年的第"+sumDays+"天");
}
}
编译运行: