"虽然" "做什么"验证" for"环

时间:2015-02-12 04:58:26

标签: java

编辑:用户输入一个正数,代码从该数字变为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);

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

另外,我怎么能这样做呢?

2 个答案:

答案 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);