gpt4 book ai didi

java - 嵌套 if-else 语句的问题

转载 作者:行者123 更新时间:2023-12-01 18:43:44 24 4
gpt4 key购买 nike

我在嵌套一些 if-else 语句时遇到问题,至少我认为问题所在。我已经多次修改这段代码试图弄清楚它,所以我决定将其恢复到原始状态并寻求一些帮助。要求用户输入 3 到 15 之间的奇数。我需要验证该输入,如果它不在 3 到 15 之间,则输出一条错误消息。同样,如果不是奇数,则需要输出不同的数字。运行下面的代码时,如果我输入偶数、字母或数字 <3 或 >15,我会收到两条错误消息。如果输入是 3 到 15 之间的奇数,则可以正常工作。我知道我必须区分这两个错误,只是无法弄清楚如何做到这一点并使代码正常运行/工作。如果没有运气,也尝试过其他方法。当然,这很愚蠢,因为我的大多数错误似乎都是愚蠢的。感谢您的帮助!

public static void main(String[] args) {

// Declare variables
String inputString;
boolean done = false;
int numRows = 0;

// Prompt for user input
do
{
inputString = JOptionPane
.showInputDialog("Enter number of rows (odd number between 3 and 15): ");

// Validating input
try
{
numRows = Integer.parseInt(inputString);
}
catch (NumberFormatException e)
{
done = true;
}
if(numRows % 2 == 0) // Validating input is an odd number
done = true;
if((numRows < 3) || (numRows > 15))// Validating input is between 3 and 15
done = true;
else
done = false;

if(done)
JOptionPane.showMessageDialog(null, "Error, not an ODD number. Re-enter odd number between 3 and 15",
"Error", JOptionPane.ERROR_MESSAGE);

if(done)
JOptionPane.showMessageDialog(null, "Error, number not between 3 and 15. Re-enter odd number between 3 and 15",
"Error", JOptionPane.ERROR_MESSAGE);
}
while(done);
}

最佳答案

有趣的是,您不需要 if 语句。您可以极大地简化(并修复)您的 boolean 表达式。

首先,让我们建立 (numRows < 3) || (numRows > 15) 的行为。要做到这一点,要么 numRows必须严格小于 3,或严格大于 15。这不会验证数字范围 - 您需要将其切换为 AND 语句。但即使这样做也无法验证正确的范围 - 您将验证 不在 3 到 15 之间的所有内容!

要解决这个问题,您需要扭转不平等。

您现在有(numRows >= 3) && (numRows <= 15) 。为此,numRows必须介于 3 和 15 之间(含 3 和 15)。

现在,让我们将其与奇数/偶数检查结合起来,您将得到以下结果:

 done = (numRows % 2 == 0) || ((numRows >= 3) && (numRows <= 15));

该语句的行为如下:

  • 要么numRows是偶数,或者
  • numRows限制在 3 到 15 之间(含 3 和 15)。

我对你结合 JOptionPane 也有一些想法语句也是如此,但这更多的是演示问题而不是代码问题 - 我将把它作为练习留给读者。

关于java - 嵌套 if-else 语句的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18803939/

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