我应该制作第二天显示的代码,除了结束于31的月份之外,这个工作正常。例如,当我输入2000年3月31日时,它给了我4/2/2000并跳过第一天?我不确定为什么?
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package lab53;
import java.util.Scanner;
/**
*
* @author Owner
*/
public class Lab53 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner keyboardInput = new Scanner(System.in);
int year, month, day;
System.out.println("Enter year/month/day");
year = keyboardInput.nextInt();
month = keyboardInput.nextInt();
day = keyboardInput.nextInt();
if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12))
{
day=thirtyOneDaysMonth(day);
if(day==1 && month==12){
++year;
month=1;
}
else if(day==1 && month!=12)
++month;
}
if ((month==2 || month == 4 || month == 6 || month == 9 || month == 11))
{
day=thirtyDaysMonth(day);
if(month==2 && isLeapYear(year))
{
if(day>29)
{
++month;
day=1;
}
}
else if( day>28 && month==2)
{
++month;
day=1;
}
else
{
if(day==1)
{
++month;
day=1;
}
}
}
System.out.println("The next date is:"+ month + "/" + day + "/" + year);
}
public static int thirtyOneDaysMonth(int day)
{
if(day==31)
day=1;
else
++day;
return day;
}
public static int thirtyDaysMonth(int day)
{
if(day==30)
day=1;
else
++day;
return day;
}
public static boolean isLeapYear(int year)
{
if((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
return true;
else
return false;
}
}
答案 0 :(得分:2)
将if ((month==2 || month == 4 || month == 6 || month == 9 || month == 11))
更改为else if ((month==2 || month == 4 || month == 6 || month == 9 || month == 11))
。
在某一天= 31,您将在if语句中更新月份。然后你离开if,然后输入你的下一个if语句来处理30天的月份。然后,您的代码会再次增加一天。
答案 1 :(得分:0)
因为在第一个if
增加3/31/2000
到4/1/2000
之后,第二个if
被评估,这将再次增加一天。将第二个if
改为else if
。
答案 2 :(得分:0)
在月份== 3和日期== 31的情况下,白天通过
回到1day=thirtyOneDaysMonth(day);
然后这个月被
提升了else if(day==1 && month!=12)
++month;
然后下一个if语句为true,因为现在是月== 4
if ((month==2 || month == 4 || month == 6 || month == 9 || month == 11))
使用else将其连接到之前的if语句if将解决问题
else if ((month==2 || month == 4 || month == 6 || month == 9 || month == 11))