Java:即使条件已满足,也会执行/ while循环重复

时间:2013-03-19 18:23:00

标签: java do-while

我正在尝试一个简单的do while循环,假设在输入小于1且大于1000时运行。它应该要求用户在循环中输入正确的数字。它现在似乎正在做的是再一次重复循环,要求输入正确,然后显示结束消息。如果条件得到满足,不确定为什么重复它

String name = JOptionPane.showInputDialog(null,
        "Please enter students lastname");

int input = Integer.parseInt(JOptionPane.showInputDialog(null,
        "Please enter students ID"));

do {
    JOptionPane.showMessageDialog(null,
            "Please enter a student ID within the correct parameters");
    input = Integer.parseInt(JOptionPane.showInputDialog(null,
            "Please enter students ID"));
} while (input < 1 && input > 1000);

// Output dialog with user input
JOptionPane.showMessageDialog(null, "StudentID: " + input
        + "\nStudent Last: " + name);

3 个答案:

答案 0 :(得分:5)

您将至少两次呈现对话框 - 一次在循环之前,一次在循环内。

do-while直到循环执行至少一次后才测试条件。

你可以:

  • 取消第一次调用以显示输入对话框。
  • 或者将你的do-while循环更改为while循环。

另外,请参阅@ GrailsGuy关于循环测试的评论。您当前的测试将始终失败。

答案 1 :(得分:1)

我认为你在CONDITION不正确时,因为我在print语句中读到评论,我相信你需要

 while (input > 1 && input < 1000);

因为ID不能为负数。

如果ID值介于2 to 999之间,请记住此条件为真。

正如您评论只是为了澄清,如果用户输入的数字超出范围(1-1000),即。 2005年,我希望循环循环,要求用户输入范围内的数字,直到满足该条件

要做,请阅读评论以了解我的代码是什么:

input = -1;
while(input < 1 || input > 1000){ 
//    ^              ^ OR greater then 1000
// either small then 1   
}

注意:我已经惩罚了OR而不是AND因为任何一个条件失败你应该继续循环。

答案 2 :(得分:-2)

我会用while

更改它
int input = Integer.parseInt(JOptionPane.showInputDialog(null,
    "Please enter students ID"));
while(input < 1 || input > 1000) {
    // Your stuff
}

解释

我认为错误的是,首先,任何数字都不可能(同时)小于1且超过1000,所以很明显,有效输入应该在< / em>指定范围(即从-Infinity0 1001Infinity

其次,在另一个答案中提到的内容:do...while循环总是至少运行一次,并且只要while条件为真,它就会重复。由于在进入循环之前正在读取输入,因此'确认always takes place... What's the need to request a correction on a possibly correct输入'值?

我认为错误的是对验证规则的误解:

  

我正在尝试一个简单的do while循环,假设输入小于1,大于1000

字的含义是什么?我认为这意味着输入必须给定范围之外。