该程序应该需要一个月和一年,然后返回天数;然而,它只需要几个输入然后给出输出。我认为问题出在Scanner
实例上,因为我尝试过提供预设值,例如month = 2
和year = 2000
,而且效果很好。
public static int getNumberofDays(int month, int year) {
Scanner in = new Scanner(System.in);
month = in.nextInt();
year = in.nextInt();
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
checking which month is it
if(month == 1 || month == 3 || month == 5 ||
month == 7 || month == 9 || month == 11)
{
return 31;
} else if(month == 4 || month == 6 || month == 8 ||
month == 10 || month == 12) {
return 30;
} else {
return 29;
}
} else {
if(month == 1 || month == 3 || month == 5 || month == 7 ||
month == 9 || month == 11)
{
return 31;
} else if(month == 4 || month == 6 || month == 8 ||
month == 10 || month == 12)
{
return 30;
} else {
return 28;
}
}
}
答案 0 :(得分:1)
怪异:
Scanner in = new Scanner(System.in);
month = in.nextInt();
year = in.nextInt();
您在班级中实例化新Scanner
并将参数设置为下一个整数值。
如果是这种情况,为什么要传递值?
抛弃该方法中的Scanner
声明,以便实际使用您传入的内容,并适当地推进Scanner
。
这就是说你所遇到的逻辑错误 - 每个月的日子都不正确。例证:11月有30天,但你的计划将返回31。
这是一个样本。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Month?");
int month = scan.nextInt();
scan.nextLine();
System.out.println("Year?");
int year = scan.nextInt();
scan.nextLine();
System.out.println(getNumberOfDays(month, year));
}