1、switch(表达式){
case 常量1:
执行语句1;
// break;
case 常量2:
执行语句2;
// break;
… …
case 常量N:
执行语句N;
// break;
default:
执行语句;
// break;
}
2、说明:
①根据Switch表达式的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他的case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。
② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。
③switch结构中的表达式,只能是如下6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)。
④case后面只能声明常量,不能声明范围。
⑤break关键字是可选的。
⑥default相当于if-else结构中的else,default结构是可选的。
switch-case练习1
1、使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输
出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch(c){}
import java.util.Scanner;
class SwitchCaseExer1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入需要转换的字符:");
String word = scan.next();
char c = word.charAt(0);
switch (c)
{
case 'a':
System.out.println('A');
break;
case 'b':
System.out.println('B');
break;
case 'c':
System.out.println('C');
break;
case 'd':
System.out.println('D');
break;
default:
System.out.println("other");
break;
}
}
}
switch-case练习2
2、对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
import java.util.Scanner;
class SwitchCaseExer2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入考试成绩:(0-100)");
int score = scan.nextInt();
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 (score / 60){
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("及格");
break;
}
}
}
switch-case练习3
3.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
import java.util.Scanner;
class SwitchCaseExer3 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入月份:(1-12)");
int month = scan.nextInt();
switch (month)
{
case 3:
case 4:
case 5:
System.out.println("spring");
break;
case 6:
case 7:
case 8:
System.out.println("summer");
break;
case 9:
case 10:
case 11:
System.out.println("autumn");
break;
case 12:
case 1:
case 2:
System.out.println("winter");
break;
}
}
}
switch-case练习4
4、编写程序:从键盘上输入2019的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。
说明:break在switch-case中是可选的。
import java.util.Scanner;
class SwitchCaseExer4 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入月份:(1-12)");
int month = scan.nextInt();
System.out.println("请输入号数:(1-31)");
int day = scan.nextInt();
//方式一:缺点是冗余
switch (month){
case 1:
System.out.println("2019年的第" + day + "天");
break;
case 2:
System.out.println("2019年的第" + (31 + day) + "天");
break;
case 3:
System.out.println("2019年的第" + (59 + day) + "天");
break;
case 4:
System.out.println("2019年的第" + (90 + day) + "天");
break;
case 5:
System.out.println("2019年的第" + (120 + day) + "天");
break;
case 6:
System.out.println("2019年的第" + (151 + day) + "天");
break;
case 7:
System.out.println("2019年的第" + (181 + day) + "天");
break;
case 8:
System.out.println("2019年的第" + (212 + day) + "天");
break;
case 9:
System.out.println("2019年的第" + (243 + day) + "天");
break;
case 10:
System.out.println("2019年的第" + (273 + day) + "天");
break;
case 11:
System.out.println("2019年的第" + (304 + day) + "天");
break;
case 12:
System.out.println("2019年的第" + (334 + day) + "天");
break;
}
//方法二:先定义一个总量来保存天数
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.println("今天是2019年的第" + sumDays + "天");
}
}
}
switch-case练习5
4、从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或 2)可以被400整除
import java.util.Scanner;
class SwitchCaseExer5 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
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:
//判断year是否是闰年
if ((year % 4 == 0 && year % 100 == 0) || year % 400 ==0){
sumDays += 29;
}else{
sumDays += 28;
}
case 2:
sumDays += 31;
case 1:
sumDays += day;
System.out.println(year + "年的" + month + "月" + day + "日,是第" + sumDays + "天");
}
}
}
switch-case练习6
使用switch语句改写下列if语句:
int a = 3;
int x = 100;
if(a==1)
x+=5;
else if(a==2)
x+=10;
else if(a==3)
x+=16;
else
x+=34;
class SwitchCaseExer6 {
public static void main(String[] args) {
int a = 3;
int x = 100;
switch (a)
{
case 1:
x += 5;
System.out.println(x);
break;
case 2:
x += 10;
System.out.println(x);
break;
case 3:
x += 16;
System.out.println(x);
break;
default:
x += 34;
System.out.println(x);
break;
}
}
}
switch-case练习7
7、编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的
值输出其对应的成绩等级:
score>=90 等级: A
70<=score<90 等级: B
60<=score<70 等级: C
score<60 等级: D
方式一:使用if-else
方式二:使用switch-case: score / 10: 0 - 10
说明:
1、凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
2、我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多。),又可以使用if-else时,我们优先选择使用switch-case。
import java.util.Scanner;
class SwitchCaseExer7 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入学生的成绩:(0-100)");
int score = scan.nextInt();
//方式一
if (score >= 90){
System.out.println("A");
}else if (score < 90 && score >= 70){
System.out.println("B");
}else if (score < 70 && score >= 60){
System.out.println("C");
}else if (score < 60){
System.out.println("D");
}
//方式二
switch (score / 10){
case 10:
case 9:
System.out.println("A");
break;
case 8:
case 7:
System.out.println("B");
break;
case 6:
System.out.println("C");
break;
default:
System.out.println("D");
break;
}
}
}
switch-case练习8
8、编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于12年一个周期,每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、rooster、dog、pig。
提示:2019年:猪 2019 % 12 == 3
import java.util.Scanner;
class SwitchCaseExer8 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
switch (year % 12){
case 1:
System.out.println("今年生肖是rooster(鸡)");
break;
case 2:
System.out.println("今年生肖是dog(狗)");
break;
case 3:
System.out.println("今年生肖是pig(猪)");
break;
case 4:
System.out.println("今年生肖是rat(鼠)");
break;
case 5:
System.out.println("今年生肖是ox(牛)");
break;
case 6:
System.out.println("今年生肖是tiger(虎)");
break;
case 7:
System.out.println("今年生肖是rabbit(兔)");
break;
case 8:
System.out.println("今年生肖是dragon(龙)");
break;
case 9:
System.out.println("今年生肖是snake(蛇)");
break;
case 10:
System.out.println("今年生肖是horse(马)");
break;
case 11:
System.out.println("今年生肖是sheep(羊)");
break;
case 12:
System.out.println("今年生肖是monkey(猴)");
break;
}
}
}