小白求助,大大帮忙压~
本帖最后由 是小石榴呀 于 2019-12-18 14:55 编辑哪位大神帮我看看,为啥下面这个代码,不论我输入哪个日期,都是输出这一天是当年的第“day”天呢? 比如输入day是31,就输出第31天
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 += 31;
case 11:
num += 30;
case 10:
num += 31;
case 9:
num += 30;
case 8:
num += 31;
case 7:
num += 31;
case 6:
num += 30;
case 5:
num += 31;
case 4:
num += 30;
case 3:
num += 31;
case 2:
if((year % 4 ==0&&year % 100 != 0)||year % 400 == 0 ){
num += 29;
}else{
num += 28;
}
case 1:
num = day;
}
System.out.println("这一天是当年的第"+ num +"天");
}
}
你的程序有两个错误。先说你想到的这个错误,因为在最后一个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 +"天");
}
} sunrise085 发表于 2019-12-18 15:20
你的程序有两个错误。先说你想到的这个错误,因为在最后一个case中你将num赋值为day,所以不管前边num加了 ...
我知道啦,其实这两个错误是一个错误啦,谢谢,我理解了。是最后不管怎么算 ,最后都是赋值了,我这里光想一开始num=0,需要加上输入的天数了。这样我就可以一开始num=day然后删除最后的case1 就可以啦。。谢谢啊
页:
[1]