Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JOptionPane进行输入验证_Java_Swing_Validation_Joptionpane - Fatal编程技术网

Java 使用JOptionPane进行输入验证

Java 使用JOptionPane进行输入验证,java,swing,validation,joptionpane,Java,Swing,Validation,Joptionpane,我正在使用JOptionPane框对程序进行输入验证。我试图让输入框在用户每次以非双精度输入错误消息后重复。我该怎么做 try { lengthResult = Double.parseDouble(JOptionPane.showInputDialog("What is the length of your garage in square feet?")); } catch (NumberFormatException e) { JOp

我正在使用
JOptionPane
框对程序进行输入验证。我试图让输入框在用户每次以非双精度输入错误消息后重复。我该怎么做

    try {
        lengthResult = Double.parseDouble(JOptionPane.showInputDialog("What is the length of your garage in square feet?"));
    }
    catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Please enter a number in digit format.","Inane error",JOptionPane.ERROR_MESSAGE);
    }

如果要重复消息框,直到用户输入有效的内容,我会这样做:

Double lengthResult = null; //Init to null, which is invalid
String title = "Please anter a number";
int initialType = JOptionPane.QUESTION_MESSAGE;
do {
  try {
    lengthResult = Double.parseDouble(
      JOptionPane.showInputDialog(null,
         "What is the length of your garage in square feet?",
         title, initialType));
  } catch (NumberFormatException e) {
    initialType = JOptionPane.ERROR_MESSAGE;
    title = "Error: Please enter a number!";
  }
} while(lengthResult == null); //Iterate as long as no valid input found

请注意,此检查依赖于lengthResult是Double类型的对象,而不是Double基元类型的对象。使用primitive double时,您需要一些额外的标志,因为您无法通过这种方式检查lengthResult值。

使用lengthResult填充条件的do while循环如何?嗨,Jan,谢谢您的输入。我已经尝试过这个概念,这绝对是验证输入的正确方法。我只是不知道如何设置代码。谢谢Jan,这现在变得更有意义了。我现在得到的是两个错误,一个在“Double lengthResult=null”行,另一个在“while(lengthResult==null);”行;。第一个错误是“不能从null转换为double”。Eclipse告诉我参数类型double的运算符未定义,第二个错误的运算符为null。知道为什么吗?您可能已经将长度结果定义为double(小d)而不是double(大写d)?是的!这就是为什么。谢谢你的帮助,简,这使我的程序完全符合我的要求。我将进一步了解“双重”和“双重”之间的区别