如果condition总是返回true(Java)

时间:2015-03-07 18:23:12

标签: java date if-statement conditional-statements

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

我遇到的问题是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)

有人可以对此有所了解吗?

3 个答案:

答案 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;

对于增加和退出循环的月份,你永远不会离开它因为月份(这是你检查的永远不会改变价值)