我是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循环,但我想知道是否有更有效的方法可以解决这个问题?
答案 0 :(得分:2)
您可以做的就是创建一个验证输入并实现KeyListener
的类,然后创建JOptionPane
并调用addKeyListener()
并将其传递给您的监听器。因此,当用户在JOptionPane中输入内容时,您可以过滤所输入的内容(并将属性设置为“0”或其他内容,如果他们点击 Enter 而不键入任何内容)。如果您需要处理其他事件,还可以添加其他侦听器(另请参阅:PropertyChangeListener)。
答案 1 :(得分:1)
创建一个返回double的方法,它包含while循环以及所有必需的检查和parse double语句,并使用它来设置inputNumberXXX变量。通过这种方式,您不必复制和粘贴代码三次,因为您只需调用相同方法三次。