如果条件总是 returns 真 (Java)

if condition always returns true (Java)

我正在尝试实现一个日期系统,该系统不可避免地会显示明天的日、月和年。

我遇到的问题是 if 语句之一始终 return 为真,而此语句之后的语句始终 return 为假。

这是我的部分代码:

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;

return正确的行是:

 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10)

其他所有内容 return 都是假的,即我的案例 2 陈述

if (month == 4 || month == 6 || month == 9 || month == 11)

任何人都可以阐明这一点吗?

您正在测试 month 字段。

在情况 1 中,月份始终为 1。

 switch (month) {
            case 1:  //mount = 1 !!
                if (month == 1 ||...
     //
 }

在java获得明天的最简单方法是

public Date nextDate(Date currentDate) {
    Calendar c = Calendar.getInstance(); 
    c.setTime(currentDate); 
    c.add(Calendar.DATE, 1);
    return c.getTime();
}

您的代码中的问题在这部分:

 } else {
                        tomorrowDay = 1;
                        tomorrowMonth = month + 1;

既然要在31日增加月份,就应该改成

 } else {
                        tomorrowDay = 1;
                        month = month + 1;

增加月份并退出循环,否则您永远不会离开它,因为月份(您正在检查的月份永远不会更改值)