我正在尝试实施一个日期系统,它不可避免地显示明天,月和年的明天。
我遇到的问题是if语句之一总是返回true,而后面的那些语句总是返回false。
以下是我的代码的一部分:
public class dateVerification {
int tomorrowDay = 0;
int tomorrowMonth = 0;
int tomorrowYear = 0;
int day = 0;
int month = 0;
int year = 0;
public void date() {
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter the day");
day = myScanner.nextInt();
System.out.println("Enter the month");
month = myScanner.nextInt();
System.out.println("Enter the year");
year = myScanner.nextInt();
switch (month) {
case 1:
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10) {
if (day < 31) {
tomorrowDay = day + 1;
} else {
tomorrowDay = 1;
tomorrowMonth = month + 1;
}
}
break;
返回true的行是:
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10)
其他一切都是假的,即我的案例2陈述
if (month == 4 || month == 6 || month == 9 || month == 11)
有人可以对此有所了解吗?
答案 0 :(得分:2)
您正在测试month
字段。
在案例1中,月份始终为1。
switch (month) {
case 1: //mount = 1 !!
if (month == 1 ||...
//
}
答案 1 :(得分:0)
明天获得Java的最简单方法是
public Date nextDate(Date currentDate) {
Calendar c = Calendar.getInstance();
c.setTime(currentDate);
c.add(Calendar.DATE, 1);
return c.getTime();
}
答案 2 :(得分:0)
您的代码中的问题在于此部分:
} else {
tomorrowDay = 1;
tomorrowMonth = month + 1;
由于您希望在当天为31时增加月份,因此应将其更改为
} else {
tomorrowDay = 1;
month = month + 1;
对于增加和退出循环的月份,你永远不会离开它因为月份(这是你检查的永远不会改变价值)