概述
/*
程序流控制语句 分支语句之二 switch case
switch结构
switch(表达式) //表达式不是boolean型
case 常量1:
语句1;
//break
case 常量2:
语句2;
//break
case 常量3:
语句3;
//break
.
.
.
case 常量N:
语句N;
//break
deafault:
语句;
//break
说明:
1,根据switch表达式中的值,一词匹配各个case中的常量,一旦匹配成功则进入
相应的case结构中,调用其执行语句,当调用完成后,则继续向下执行其他case
结构中的执行语句,直到遇到break关键字或者switch-case结构末尾为止。
2,break 关键字可以使用在switch-case结构中,表示一旦遇到此关键字就会跳出switch-case结构
3,switch表达式的类型规定只能有六种:byte,short,char,int,枚举,string。
4,case之后只能声明常量,不能声明范围。
5,break关键字根据需要加,大部分情况需要
6,default:类似if-else结构中的else。default结构是可选项。
而且位置灵活,不一定在末尾。实际往往在末尾,
7,如果switch-case结构中多个case 的执行语句相同,可以考虑合并。见例题二
原理,没有执行语句没有break会一直执行到有break的地方,因为执行语句相同,所以输出一样
8,在使用分支结构式时,如何选择用if还是switch。凡是能用switch执行的都能用if执行,反之不成立。
在两者都能用且switch中case 的情况不多时,优先选择switch结构,因为switch执行效率稍高。
*/
import java.util.Scanner;
class SwitchCaseTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
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");
break;//遇到break停止执行
case 4:
System.out.println("four");
default:
System.out.println("null");//输出two three
}
num = 1;
switch(num){
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
default:
System.out.println("null");//default位置灵活,但一般不这么写
case 3:
System.out.println("three");
break;
case 4:
System.out.println("four");//输出 one two null three
}
num = 5;
switch(num){
default:
System.out.println("null");//default位置灵活,但一般不这么写
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
break;
case 4:
System.out.println("four");//无匹配,执行default,且执行后面语句直到break,
//输出null zero one two three
}
//例题,对输入的小写字母abcde转换成大写字母输出,其他转换成other。
System.out.println("请输入一个小写的英文字母");
String word = scan.next();//scanner不能直接获取char类型,先获取成string类型的再转换
char c = word.charAt(0);//通过此语句获取string类型的第一个字符为char型
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;
case 'e':
System.out.println("E");
break;
default:
System.out.println("other");
break;//此处break可以省略
}
//例题2,当分数小于60显示不及格,当分数大于等于60显示及格
System.out.println("请输入得分");
int score = scan.nextInt();
// 分数除10,这样就会只剩11种情况,比101种方便
switch (score / 10){
case 0 :
System.out.println("不及格");
break;
case 1 :
System.out.println("不及格");
break;
case 2 :
System.out.println("不及格");
break;
case 3 :
System.out.println("不及格");
break;
case 4 :
System.out.println("不及格");
break;
case 5 :
System.out.println("不及格");
break;
case 6 :
System.out.println("及格");
break;
case 7 :
System.out.println("及格");
break;
case 8 :
System.out.println("及格");
break;
case 9 :
System.out.println("及格");
break;
case 10 :
System.out.println("及格");
break;
default:
System.out.println("输入非法");
}
//因为case执行语句相同可以有省略写法
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;
default:
System.out.println("输入非法");
}
//也可以直接除60这样就只有两种选项0和1
switch (score / 60){
case 0 :
System.out.println("不及格");
break;
case 1 :
System.out.println("及格");
break;
default:
System.out.println("数据非法");
}
//例题3,键盘输入2019年的月份month和天数day,输出这是2019年的第几天
System.out.println("请输入2019年目前的月份");
int month = scan.nextInt();
System.out.println("请输入2019年本月的日期");
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; //通过倒加,和 += 的性质来做可以避免冗余代码,更简洁
break;
default:
System.out.println("数据非法");
}
System.out.println("现在是2019年第" + sumDays + "天。");
//例题4,分别输入年月日,判断是那一年的第几天,闰年标准:1可以被4整除,但不能被100整除2能被400整除
System.out.println("请输入年份");
int year = scan.nextInt();
System.out.println("请输入月份");
int month1 = scan.nextInt();
System.out.println("请输入几号");
int day1 = scan.nextInt();
int sumDays1 = 0;
switch (month1){
case 12:
sumDays1 += 30;
case 11:
sumDays1 += 31;
case 10:
sumDays1 += 30;
case 9:
sumDays1 += 31;
case 8:
sumDays1 += 31;
case 7:
sumDays1 += 30;
case 6:
sumDays1 += 31;
case 5:
sumDays1 += 30;
case 4:
sumDays1 += 31;
case 3:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
sumDays1 += 29;
}else{
sumDays1 += 28;
}
case 2:
sumDays1 += 31;
case 1:
sumDays1 += day1; //通过倒加,和 += 的性质来做可以避免冗余代码,更简洁
break;
default:
System.out.println("数据非法");
}
System.out.println("现在是" + year + "年第" + sumDays1 + "天。");
//输入一个年份,判断属于十二生肖中的哪一个,输出rat,ox,tiger,dragon,snake,horse,sheep,monkey,rooster,dog,pig
//2019%12==3,2019年是猪年,2020年是鼠年。
System.out.println("请输入年份");
int year1 = scan.nextInt();
String zodiac = "";
switch (year1 % 12){
case 4:
zodiac = "鼠rat";
break;
case 5:
zodiac = "牛ox";
break;
case 6:
zodiac = "虎tiger";
break;
case 7:
zodiac = "兔子rabbit";
break;
case 8:
zodiac = "龙dragon";
break;
case 9:
zodiac = "蛇snake";
break;
case 10:
zodiac = "马horse";
break;
case 11:
zodiac = "羊sheep";
break;
case 0:
zodiac = "猴monkey";
break;
case 1:
zodiac = "鸡rooster";
break;
case 2:
zodiac = "狗dog";
break;
case 3:
zodiac = "猪pig";
break;
default:
System.out.println("数据非法");
}
System.out.println("现在是" + zodiac + "年");
}
}
最后
以上就是幸福蜻蜓为你收集整理的java条件判断语句 switch-case 练习的全部内容,希望文章能够帮你解决java条件判断语句 switch-case 练习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复