Java学习之选择结构 【switch case】

一、语法

switch(表达式){
    case 值1:
        //执行语句
        break;
     case 值2;
         //执行语句
         break;
         ...
      default :
      //执行语句
      break;   
}

说明:

①表达式的结果类型只能为:byte,short,int,char,String(jdk7新增支持),枚举(jdk5新增支持)

②表达式结果的类型要与case后值的类型一致

③default是可选的

④break可选的,表达式返回结果与case值匹配成功后,依法向下执行,直到遇到break。

 

二、应用

1、从键盘分别输入年月日,判断这一天是当年的第几天

//从键盘分别输入年月日,判断这一天是当年的第几天
//注:判断闰年的条件:1)被4整除,但不能被100整除;2)被400整除
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();

System.out.print("请输入月份:");
int month = scanner.nextInt();

System.out.print("请输入日:");
int day = scanner.nextInt();

int sum = 0;
switch (month) {
    case 12:
        sum += 30;
    case 11:
        sum += 31;
    case 10:
        sum += 30;
    case 9:
        sum += 31;
    case 8:
        sum += 31;
    case 7:
        sum += 30;
    case 6:
        sum += 31;
    case 5:
        sum += 30;
    case 4:
        sum += 31;
    case 3:
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            sum += 29;
        } else {
            sum += 28;
        }
    case 2:
        sum += 31;
    case 1:
        sum += day;
}
System.out.println(sum);

注意:

1、主要是理解逻辑,问不能顺着写呢?

2、scanner不能直接支持char类型

转换:

Scanner s=new Scanner(System.in);
char b =s.next().charAt(0);

3、if else实现方式(待亲测)

public class test14{
	public static void main(String[] args){
		//int year=2018,month=9,day=30;
		result(2018,9,30);//可以设置成键盘或其他方式输入。
	}
	private static void result(int year,int month,int day){
		int data=30*(month-1)+day;   //先按标准30天相加。
		//13578 10  12月   31天  
		if(month>=11){          //       11.10   前面13578   10月都要加一天
			data=data+6-2;      //       加之前所有31号的6天,减去二月多加的两天(平年二月28天)
		}else if(month>=9){     //       9.15   前面13578    各加一天 
			data=data+5-2;
		}else if(month>=8){
			data=data+4-2;
		}else if(month>=6){
			data=data+3-2;
		}else if(month>=4){
			data=data+2-2;
		}else if(month==3){	   //三月减二月多算的2天。
			data=data+1-2;
		}else if(month==2){    //二月几号直接由day决定,不用减2天。
			data=data+1;       //1月31天,加1天。
		}
		//判断当前是否是闰年(闰年能被4整除但不能被100整除)
			if(year%4==0&&year%100!=0){
				//闰年二月加一天
				data++;
				System.out.print(year+"年"+month+"月"+day+"日是"+year+"年"+"第"+data+"天");
			}else{
				System.out.print(year+"年"+month+"月"+day+"日是"+year+"年"+"第"+data+"天");
			}
	};
}

此段代码参考https://blog.csdn.net/weixin_43311389/article/details/82914062

三、总结

1、可以用switch case的,都可以用if else,反之不成立

2、两种情况都可以使用时,而且case的值不多的时候,优先使用switch case ,因为其效率略高。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值