2013-02-08 70 views
0

当用户在输入对话框中什么都不输入时,它终止循环。我已经调试过代码,并且当用户什么都不输入时名字确实是“”。当窗口关闭或点击取消时,它不会退出循环。这就像它看到名称== null,而不是名称==“”。这是循环。输入对话框循环提前结束

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

任何人都可以提供一些见解给我吗?

回答

1

不要与name == ""比较字符串。使用"".equals(name)或在你的情况下,甚至name.isEmpty()(自Java 6以来可用)。

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

你的代码更改为:

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

没错。感谢你的回答。这样一个愚蠢的错误。 – 2013-02-08 20:23:15

0

切勿使用==Java比较String秒。

使用方法equals(String)

请参见下面的link

0

有使用大不同“==”奥得等于。还尝试使用equalsIgnoreCase(),以确保

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

停止比较字符串,并开始使用Apache Commons Lang中StringUtils类。它很好地处理了零位,并且经过了很好的测试。你会想要使用StringUtils.isBlamk(name)StringUtils.isEmpty(name)