JAVA题目 接收命令行参数年、月、日,判断这一天是当年的第几天

#相关代码
题目:接收命令行参数年、月、日,判断这一天是当年的第几天

注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
2)可以被400整除


class Work04{
    public static void main(String [] args){
        int year = Integer.parseInt(args[0]);
        int month = Integer.parseInt(args[1]);
        int day = Integer.parseInt(args[2]);
        int d = 0;
    switch (month) {
        case 1:
        d = 0;
        break;
        case 2:
        d = 31;
        break;
        case 3:
        d = 59;
        break;
        case 4:
        d = 90;
        break;
        case 5:
        d = 120;
        break;
        case 6:
        d = 151;
        break;
        case 7:
        d = 181;
        break;
        case 8:
        d = 212;
        break;
        case 9:
        d = 243;
        break;
        case 10:
        d = 273;
        break;
        case 11:
        d = 304;
        break;
        case 12:
        d = 334;
        break;
        default:
        System.out.println("你中毒了!只有12个月!!");
        break;
        
    }
    if (year / 4 == 0 && year / 100 != 0 ){
        if (month < 2){}
        else if (month == 2 && day == 29){d = ++d;}
        else {d = ++d;}
        }
    else if (year / 400 == 0){
        if (month < 2){}
        else if (month == 2 && day == 29){d = ++d;}
        else {d = ++d;}
    }
    else {
    }
    if (day >= 1 && day <= 31){
    System.out.println(d + day);
    }
    else {System.out.println("小子,你输错了!");}
    }
}

你用除法肯定会出问题,要用取模符号。还有,你的判断逻辑是不是太多了,没必要啊!
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ){
System.out.println(year+"是闰年");
if (month > 2){
++d;
}
} else {
System.out.println(year+"不是闰年");
}

倒过来从12月往回计算天数更合理,不用break,从哪个月符合case,就一直往下累加天数(switch…case的特性,不加break,就一直往下执行下面的case,知道break或者结束switch语句)

d = 0boolean isRunNian ;
 if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
            isRunNian  = true;//闰年
        }else{
           isRunNian  = false;//平年
        }
switch (month) {
        case 12:
        d += 30;
       
        case 11:
        d += 31;
        
        case 10:
        d += 30;
        
        case 9:
        d += 31;
       
        case 8:
        d += 31;
       
        case 7:
        d += 30;
        
        case 6:
        d += 31;
        
        case 5:
        d += 30;
        
        case 4:
        d += 31;
       
        case 3:
            if (isRunNian){ d += 29}
            else { d += 28}
        case 2:
        d += 31;
       
        break;
        default:
        System.out.println("你中毒了!只有12个月!!");
        break;
}

    //最后加上本月天数还要判断当月是否有这一天,比如4月31号
    if (day >= 1 ){
        if ((month == 1 || month == 3 /* 其他大月*/) && day <=31){
            d += day;
        }else if ((/*小月*/) && day <=30){
           d += day;
        }else if (month == 2  && isRunNian && d<= 29){//闰年二月
           d += day;
        }else if (month == 2  && !isRunNian && d<= 28){//平年2月
           d += day;
        }else{
            System.out.println("小子,你输错了!");
            return;
        }
        System.out.println(d);
    }else{
         System.out.println("小子,你输错了!");
    }

主要是平闰年的 判定,相关代码写上之后,还是不能判定闰年,并且天数+1