gpt4 book ai didi

java - 为什么我的代码会进入条件应为假的 else-if 语句?

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:46 24 4
gpt4 key购买 nike

我有一个方法可以根据月份和日期返回一年中的季节。前三次我调用它工作正常的方法。但是,第四个方法在应该返回秋季时返回了 Spring 。

它应该绕过 spring 的 else-if 语句并继续下降,但是当我调试它时,它不是这样做的。它进入 else-if 并返回它。

我试着移动月份和日期,但无论我把它放在哪里,它都会返回 Spring 。我不明白为什么,因为论点不符合该特定陈述的标准。

这是我的代码:

public static void main(String[] args) {
System.out.println(season(1, 5));
System.out.println(season(4, 12));
System.out.println(season(7, 1));
System.out.println(season(10, 31));
}

public static String season(int month, int day) {
if(month >= 12 && day >= 16 || month <= 3 && day <= 15) {
return "winter";
} else if(month >= 3 && day >= 16 || month <= 6 && day <= 15) {
return "spring";
} else if(month >= 6 && day >= 16 || month <= 9 && day <= 15) {
return "summer";
} else {
return "fall";
}
}

最佳答案

您的程序完全按照您的指示执行。当您调用 season(10, 31) 时,您将进行测试:

if (month >= 3 && day >= 16 || ...)

这是真的,因为月份是 10 日是 31 日(均大于他们在此测试中的目标)。显然,这不是您想要的。所以你必须做一个稍微复杂一点的测试:

if (month == 3 && day >= 16 || month > 3 && month < 6 || month == 6 && day <= 15)

如果月份不是 Spring 的开始或结束月份,这测试日期。您的其他测试将需要类似的调整。

您可能会发现您可能希望在测试中添加括号以帮助按照此处其他答案的建议对它们进行分组,但由于 Java 运算符的优先级,在这种情况下并不是绝对必要的。

关于java - 为什么我的代码会进入条件应为假的 else-if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com