你的程序有两个错误。先说你想到的这个错误,因为在最后一个case中你将num赋值为day,所以不管前边num加了多少次,最后都会是day这个变量的值。再者,还有个逻辑错误,不是语法错误。case月份的时候应该是num+=上个月的天数,而不是当月的天数。最后在switch外面再加上day。
程序如下:
- import java.util.Scanner;
- class Exer2 {
- 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 num = 0 ;
- switch(month){
- case 12:
- num += 30;
- case 11:
- num += 31;
- case 10:
- num += 30;
- case 9:
- num += 31;
- case 8:
- num += 31;
- case 7:
- num += 30;
- case 6:
- num += 31;
- case 5:
- num += 30;
- case 4:
- num += 31;
- case 3:
- if((year % 4 ==0&&year % 100 != 0)||year % 400 == 0 ){
- num += 29;
- }else{
- num += 28;
- }
- case 2:
- num += 31;
-
- }
- num+=day;
- System.out.println("这一天是当年的第"+ num +"天");
- }
- }
复制代码