String error = "Write a number below, between 1-9;";
int number;
do {
String userentered = JOptionPane.showInputDialog(error);
number = Integer.parseInt(userentered);
if (number < 0 && number > 10) {
error = "Error";
}
} while (number > 0 && number < 10);
我想在这个do while循环中捕获用户,直到提供了正确的答案,例如现在1-9之间的数字。现在,当用户键入一个字母或将字段留空并单击“确定”时,选项窗格会关闭,但我希望它保持打开状态,直到给出正确的输入。现在,如果用户键入正确的输入,它也会给出错误消息,但如果键入错误的输入则会关闭。
答案 0 :(得分:1)
您需要更改while
循环的do-while
条件。目前,如果数字在范围内,它就会循环播放,但您的要求与其完全相反。
while (!(number > 0 && number < 10)); // Keep looping if the number is outside the range.
注意:如果未正确处理不正确的输入,Integer.parseInt()
将抛出java.lang.NumberFormatException
。
答案 1 :(得分:1)
很简单,while循环是入口控制循环。 所以我们需要从一个较少的值来统计。
String errorMsg = "Write a number below, between 1-9;";
int number = 0;
do {
try {
String usernum = JOptionPane.showInputDialog(errorMsg);
number = Integer.parseInt(usernum);
if (number < 1 || number > 9) {
errorMsg = "Error";
}
} catch (Exception e) {
errorMsg = "Error";
}
} while (number < 1 || number > 9);
答案 2 :(得分:0)
您必须在try-catch块中添加parseInt方法。还要将条件修改为数字&lt; 1 ||数字&gt; 9.最后你必须用无效值初始化数字,让我们说-1
String error = "Write a number below, between 1-9;";
int number = -1;
do {
try {
String userentered = JOptionPane.showInputDialog(error);
number = Integer.parseInt(userentered);
if (number < 1 || number > 9) {
error = "Error";
}
} catch (HeadlessException | NumberFormatException e) {
error = "Error";
}
} while (number < 1 || number > 9);