gpt4 book ai didi

java - 我的 boolean 语句以一种方式工作,但并非以看似不变的方式工作

转载 作者:行者123 更新时间:2023-12-01 04:35:46 25 4
gpt4 key购买 nike

为了使我的代码更加美观和简短,我尝试更改我的代码:

do
{
System.out.print("Enter day: ");
day = input.nextInt();

if ((isLeapYear && month == 2 && (day < 1 || day > 29)) ||
(!isLeapYear && month == 2 && (day < 1 || day > 28)) ||
((month == 4 || month == 6 || month == 9 || month == 11) && (day < 1 || day > 30)) ||
((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||
month == 10 || month ==12) && (day < 1 || day > 30)))
{
System.out.println("Invalid input");
}
}
while ((isLeapYear && month == 2 && (day < 1 || day > 29)) ||
(!isLeapYear && month == 2 && (day < 1 || day > 28)) ||
((month == 4 || month == 6 || month == 9 || month == 11) && (day < 1 || day > 30)) ||
((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||
month == 10 || month ==12) && (day < 1 || day > 30)));

对此:

boolean invalidDay = (isLeapYear && month == 2 && (day < 1 || day > 29)) ||
(!isLeapYear && month == 2 && (day < 1 || day > 28)) ||
((month == 4 || month == 6 || month == 9 || month == 11) && (day < 1 || day > 30)) ||
((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||
month == 10 || month ==12) && (day < 1 || day > 30));

do
{
System.out.print("Enter day: ");
day = input.nextInt();

if (invalidDay)
{
System.out.println("Invalid input");
}
}
while (invalidDay);

第二种方法不能按预期工作,但第一种方法可以完美工作。我唯一改变的是将长 boolean 表达式放入单个 boolean 变量中。谢谢。

最佳答案

invalidDay 在你的 while() 中永远不会重新计算,你需要以某种方式更新它的值

关于java - 我的 boolean 语句以一种方式工作,但并非以看似不变的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17389510/

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