0

我是 Java 初学者,我正在尝试使用 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 循环,但我想知道是否有更有效的方法可以解决这个问题?

4

2 回答 2

2

看看对话框教程

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

于 2012-07-15T21:35:06.390 回答
1

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

于 2012-07-15T21:27:04.317 回答