当用户在输入对话框中什么都不输入时,它终止循环。我已经调试过代码,并且当用户什么都不输入时名字确实是“”。当窗口关闭或点击取消时,它不会退出循环。这就像它看到名称== null,而不是名称==“”。这是循环。输入对话框循环提前结束
while(name == "" || name == null){
name = JOptionPane.showInputDialog("Enter you're name:");
}
任何人都可以提供一些见解给我吗?
当用户在输入对话框中什么都不输入时,它终止循环。我已经调试过代码,并且当用户什么都不输入时名字确实是“”。当窗口关闭或点击取消时,它不会退出循环。这就像它看到名称== null,而不是名称==“”。这是循环。输入对话框循环提前结束
while(name == "" || name == null){
name = JOptionPane.showInputDialog("Enter you're name:");
}
任何人都可以提供一些见解给我吗?
不要与name == ""
比较字符串。使用"".equals(name)
或在你的情况下,甚至name.isEmpty()
(自Java 6以来可用)。
==
用于比较引用,而不是对象的值。更多信息here。
你的代码更改为:
while(name == null || name.isEmpty()){
name = JOptionPane.showInputDialog("Enter you're name:");
}
有使用大不同“==”奥得等于。还尝试使用equalsIgnoreCase(),以确保
while(name == null || name.equalsIgnoreCase("")){
name = JOptionPane.showInputDialog("Enter you're name:");
}
停止比较字符串,并开始使用Apache Commons Lang中StringUtils类。它很好地处理了零位,并且经过了很好的测试。你会想要使用StringUtils.isBlamk(name)
或StringUtils.isEmpty(name)
没错。感谢你的回答。这样一个愚蠢的错误。 – 2013-02-08 20:23:15