java条件判断语句 switch-case 练习

/*
程序流控制语句 分支语句之二 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 + "年");




	}
}
发布了45 篇原创文章 · 获赞 1 · 访问量 2183

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/103751965