输入对话框循环提前结束

时间:2013-02-08 17:48:31

标签: java while-loop joptionpane

当用户在输入对话框中没有输入任何内容时,它仍然会结束循环。我调试了代码,当用户输入任何内容时,名称确实是“”。当窗口关闭或单击取消时,它不会退出循环。它就像它看到名称== null而不是名称==“”。这是循环。

while(name == "" || name == null){
    name = JOptionPane.showInputDialog("Enter you're name:");
}

有人能为我提供一些见解吗?

5 个答案:

答案 0 :(得分:1)

请勿将字符串与name == ""进行比较。使用"".equals(name)或在您的情况下使用name.isEmpty()(自Java 6起可用)。

==用于比较引用,而不是对象的值。更多信息here

将您的代码更改为:

while(name == null || name.isEmpty()){
    name = JOptionPane.showInputDialog("Enter you're name:");
}

答案 1 :(得分:0)

切勿使用==来比较String中的Java

使用方法equals(String)

请参阅以下link

答案 2 :(得分:0)

使用“==”oder equals有很大的不同。还要尝试使用equalsIgnoreCase()来确保

while(name == null || name.equalsIgnoreCase("")){
        name = JOptionPane.showInputDialog("Enter you're name:");
    }

答案 3 :(得分:0)

停止比较字符串并开始使用Apache Commons Lang StringUtils类。它很好地处理空值并且经过了很好的测试。您需要使用StringUtils.isBlamk(name)StringUtils.isEmpty(name)

答案 4 :(得分:0)

关闭窗口不会导致程序退出循环是因为我需要通过使用参数JFrame.EXIT_ON_CLOSE调用JFrame的setDefaultCloseOperation来添加默认关闭操作。关闭窗口后,这将终止JFrame并阻止其在后台运行。