编辑:用户输入一个正数,代码从该数字变为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 :(得分:2)
如果我正确理解你的意图,你试图读取整数,验证它是否大于0,然后将该数字中的所有数字按降序打印为1。
如果是这种情况,问题在于放置while循环。 for循环的条件是userInput&gt; = i。您已为i指定了值1。鉴于此,如果userInput&lt; = 0(你的while循环条件),for循环中的代码将永远不会被执行(因为userInput&gt; = i,或者等效地,userInput&gt; = 1,永远不会为真)。更正是在for循环之前移动while语句,使其成为:
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);
答案 1 :(得分:0)
你可以这样做。
int userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));
do{
System.out.print(userInput + ",");
}while(--userInput > 0);