我正在尝试一个简单的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);
答案 0 :(得分:5)
您将至少两次呈现对话框 - 一次在循环之前,一次在循环内。
do-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>指定范围(即从-Infinity
到0
或 从1001
到Infinity
)
其次,在另一个答案中提到的内容:do...while
循环总是至少运行一次,并且只要while
条件为真,它就会重复。由于在进入循环之前正在读取输入,因此'确认always takes place... What's the need to request a correction on a possibly correct
输入'值?
我认为错误的是对验证规则的误解:
我正在尝试一个简单的do while循环,假设输入小于1,和大于1000
和字的含义是什么?我认为这意味着输入必须在给定范围之外。