Вот мой код для тестирования, если дата действительна в феврале. Верхняя часть для тестирования, если leapYear истинна или ложна, работает правильно. Если я введу, например, 02/29/1963 в качестве даты, leapYear будет = false. Однако по какой-то причине код будет продолжаться, как если бы leapYear = true. Конечным результатом будет:Логическая ошибка Java-високосного года
else if (leapYear = true){
if ((day > 0) && (day < 30) && (month ==2)){
System.out.println("Your date is valid.)"`
он будет выводить «Ваша дата действительна». тогда как он должен выдаваться специально для даты 02/29/1963 «Ваша дата недействительна, потому что в феврале 1963 года только 28 дней»);
Я не могу понять, почему он это делает. Спасибо за ваше время. ПОСТАНОВИЛИ
if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) {
leapYear = true;
} else {
leapYear = false;
}
if (leapYear = false) {
if ((day > 0) && (day < 29) && (month == 2)) {
System.out.println("Your date is valid.");
} else if (day > 29) {
System.out.println("Your date is invalid because there are only 28 days in February"
+ "for the year " + year + ".");
} else {
System.out.println("Your date is invalid because the day you entered does not exist.");
}
} else if (leapYear = true) {
if ((day > 0) && (day < 30) && (month == 2)) {
System.out.println("Your date is valid.");
} else if (day > 30) {
System.out.println("Your date is invalid because there are only 29 days in February for"
+ "the year " + year + ".");
} else {
System.out.println("Your date is invalid because the day you entered does not exist.");
}
}
попробовать, если (leapYear == ложь) и вместо (leapYear = ложь) – PK20
Как стилистическая вещь, вы почти никогда не сравнить логическое значение для литерала ' true' или 'false'. Вместо 'if (a == true)' или 'if (b == false)', просто выполните 'if (a)' или 'if (! B)'. «If» - это _already_, сравнивающее логическое значение с истинным или ложным; вам не нужно повторно указывать это сравнение. Или, говоря иначе: вы обычно не пишете 'if ((i == 3) == true)' для сравнения i-3, правильно? – yshavit
спасибо всем за вашу помощь, была глупая ошибка, которую я упустил – synthofthewastes