gpt4 book ai didi

java - "While"和 "do while"验证 "for"循环

转载 作者:行者123 更新时间:2023-12-02 04:59:09 25 4
gpt4 key购买 nike

编辑:用户输入一个正数,代码从该数字变为 1。例如,用户输入 8,则代码变为 8、7、6、5、4、3、2、1。

逻辑部分正在工作。我在验证用户是否输入负数时遇到问题。

这是我所拥有的,但它不起作用。

String stringSeries = "";

int userInput = userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));

for (int i = 1; userInput >= i; userInput--)
{
while (userInput <= 0)
{
userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));
}

stringSeries +=userInput+ ", ";
}
System.out.println(stringSeries);

当我输入负数时,程序会显示“构建成功”,而它应该再次要求输入正数。

另外,我怎样才能做到这一点?

最佳答案

如果我正确理解你的意图,你正在尝试读取一个整数,验证它是否大于 0,然后按降序打印从该数字到 1 的所有数字。

如果是这种情况,问题就出在 while 循环的位置上。 for 循环的条件是 userInput >= i。您已将值 1 分配给 i。鉴于此,如果 userInput <= 0 (while 循环的条件),则 for 循环中的代码将永远不会被执行(因为 userInput >= i 或等效的 userInput >= 1 永远不会为 true)。更正的方法是将 while 语句移到 for 循环之前,使其:

String stringSeries = "";

int userInput = userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));

while (userInput <= 0)
{
userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));
}

for (int i = 1; userInput >= i; userInput--)
{
stringSeries +=userInput+ ", ";
}
System.out.println(stringSeries);

关于结构和习语的一些评论:作业中的第二个 userInput 是不必要的。通常在 for 循环中,i(迭代变量)是要更改的值。更惯用的方法是:

String stringSeries = "";

int userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));

while (userInput <= 0)
{
userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));
}

for (int i = userInput; i >= 1; i--)
{
stringSeries += i+ ", ";
}
System.out.println(stringSeries);

如果您想使用 do while 循环,代码将为:

String stringSeries = "";

int userInput;
do {
userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));
} while(userInput <= 0);

for (int i = userInput; i >= 1; i--)
{
stringSeries += i+ ", ";
}
System.out.println(stringSeries);

关于java - "While"和 "do while"验证 "for"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469618/

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