如果条件总是 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;
增加月份并退出循环,否则您永远不会离开它,因为月份(您正在检查的月份永远不会更改值)
我正在尝试实现一个日期系统,该系统不可避免地会显示明天的日、月和年。
我遇到的问题是 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;
增加月份并退出循环,否则您永远不会离开它,因为月份(您正在检查的月份永远不会更改值)