如何使用do-while循环来捕获用户?

时间:2014-02-01 12:58:57

标签: java do-while

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之间的数字。现在,当用户键入一个字母或将字段留空并单击“确定”时,选项窗格会关闭,但我希望它保持打开状态,直到给出正确的输入。现在,如果用户键入正确的输入,它也会给出错误消息,但如果键入错误的输入则会关闭。

3 个答案:

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