如何在不破坏Java的情况下重置While循环?

时间:2012-07-15 21:19:29

标签: java validation while-loop

我是Java的Begginer,我正在尝试使用JOptionPanes来输入我的变量。 在尝试验证我的输入变量时,我将输入语句放在这个while循环中。

while (input==false)
{
    inputNumberCoeffa=JOptionPane.showInputDialog("Enter co-efficient of X: ");
    inputNumberConsta=JOptionPane.showInputDialog("Enter Constant Number: ");
    inputNumberPowa=JOptionPane.showInputDialog("Enter Power Bracket should be raised to:");
    if (inputNumberCoeffa==null
        || inputNumberConsta==null
        || inputNumberPowa==null
        ||inputNumberCoeffa.isEmpty()
        || inputNumberConsta.isEmpty()
        || inputNumberPowa.isEmpty()
        || inputNumberCoeffa.matches("[A-Za-z]*")
        || inputNumberConsta.matches("[A-Za-z]*")
        || inputNumberPowa.matches("[A-Za-z]*"))
    {
        JOptionPane.showMessageDialog(null,"Please Enter a Number");        
    }
    else 
    {
        input=true;
    }
    double inputNumberCoeff=Double.parseDouble(inputNumberCoeffa);
    double inputNumberConst=Double.parseDouble(inputNumberConsta);
    double inputNumberPow=Double.parseDouble(inputNumberPowa);
}

这个while循环用于保护底部的parseDouble语句免受错误数据的影响。但是,要显示错误消息,您必须在每个数据点输入。我可以在每个数据入口点周围放置一个While循环,但我想知道是否有更有效的方法可以解决这个问题?

2 个答案:

答案 0 :(得分:2)

查看Dialog Tutorial

您可以做的就是创建一个验证输入并实现KeyListener的类,然后创建JOptionPane并调用addKeyListener()并将其传递给您的监听器。因此,当用户在JOptionPane中输入内容时,您可以过滤所输入的内容(并将属性设置为“0”或其他内容,如果他们点击 Enter 而不键入任何内容)。如果您需要处理其他事件,还可以添加其他侦听器(另请参阅:PropertyChangeListener)。

答案 1 :(得分:1)

创建一个返回double的方法,它包含while循环以及所有必需的检查和parse double语句,并使用它来设置inputNumberXXX变量。通过这种方式,您不必复制和粘贴代码三次,因为您只需调用相同方法三次。