我是 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 循环,但我想知道是否有更有效的方法来解决这个问题?
最佳答案
看看 Dialog Tutorial .
您可以做的就是创建一个验证输入的类并实现 KeyListener
然后创建 JOptionPane 并调用 addKeyListener() 并将其传递给您的监听器。因此,当用户在 JOptionPane 中键入内容时,您可以过滤正在键入的内容(并将属性设置为“0”,或者如果用户按 Enter 而不键入任何内容,则将属性设置为“0”)。如果您需要处理其他事件,您还可以添加其他监听器(另请参阅: PropertyChangeListener )。
关于java - 在 Java 中如何重置 While 循环而不破坏它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495689/