JOptionPane的。程序不显示错误消息

时间:2012-03-22 16:29:16

标签: java string swing try-catch joptionpane

我有这个代码要求输入用户名和密码。只是一个简单的JOptionPane。程序应询问输入,如果用户没有在用户名中写入任何输入,则应显示错误消息并显示相同的上一个对话框,询问用户名。但是,它不起作用。即使我没有输入任何内容,它仍然会进入密码对话框。请检查我的逻辑,我可能有点困惑;还有一种方法可以检查showInputDialog中的输入是否为字符串?有点像整数NumberFormatException? catch方法的异常也不起作用。 :)提前谢谢。

public class SwingExercise {

public static void main(String[] args) {


    String name = null;
    boolean input = true;

    try {
        while (input) {
            while (name == null) {
                name = JOptionPane.showInputDialog(null, "Enter username:");
                if (name == null) {
                    JOptionPane.showMessageDialog(null, "No input.", "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
            String pw = JOptionPane.showInputDialog(null, "Enter password:");
            input = false;
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Invalid input.", "Error", JOptionPane.ERROR_MESSAGE);

    }


}

2 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

if(name == null || name.equals("")) {
   JOptionPane.showMessageDialog(null, "No input.", "Error", JOptionPane.ERROR_MESSAGE);
   name = null;
}

关于这个问题:

  

还有一种方法可以检查showInputDialog中的输入是否为字符串?

showInputDialog()返回String,偶数,它将它们作为String读取。

答案 1 :(得分:2)

尝试声明

String name = "";

而不是

String name = null;

然后在循环条件和if条件中检查字符串名称是否为空。

while (name.equals(""))

...

if (name.equals(""))

那是因为showInputDialog方法返回一个String,并且比较String的正确方法是使用objectString.equals(anotherObjectString),你将showInputDialog返回的String与null进行比较,总是返回false。