2015-02-12 160 views
0

编辑:用户输入一个正数,代码从该数字变为1.例如用户输入一个8,所以它变为8,7 ,6,5,4,3,2,1.“while”和“do while”验证for“for”循环

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

这是我有,但它不工作。

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

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

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

+1

我们应该如何知道你在尝试做什么? – The111 2015-02-12 05:01:58

+0

请提供您想要做的事情。只是写它的不工作不会让我们明白你想要执行什么 – 2015-02-12 05:03:13

+0

好吧,用户输入一个正数,代码从该数字变为1.例如,用户输入一个8,所以它走8,7,6 ,5,4,3,2,1 – fredy21 2015-02-12 05:03:47

回答

2

如果我正确理解你的意图,你正在尝试读入一个整数,确认它大于0,然后以降序将这个数字中的所有数字打印到1。

如果是这种情况,问题在于你的while循环的位置。 for循环的条件是userInput> = i。您为i指定了1的值。鉴于此,如果userInput < = 0(您对while循环的条件),则for循环内的代码将永远不会执行(因为userInput> = i,或等价地userInput> = 1永远不会)。修正将是你之前移动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循环中,我(您的迭代变量)是要更改的值。这样做的一个更地道的办法是:

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

如果你想使用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); 
+0

我说的很多! – rayryeng 2015-02-12 05:10:09

+0

谢谢!我真笨。只需要在外面放一会儿。 :/ – fredy21 2015-02-12 05:14:37

0

你可以这样做。

int userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));   
do{ 
    System.out.print(userInput + ","); 
    }while(--userInput > 0); 
+0

否。如果用户输入负数,则会终止程序。 OP希望继续询问一个数字,直到插入一个正数。 – rayryeng 2015-02-12 14:19:53