当用户在输入对话框中没有输入任何内容时,它仍然会结束循环。我调试了代码,当用户输入任何内容时,名称确实是“”。当窗口关闭或单击取消时,它不会退出循环。它就像它看到名称== null而不是名称==“”。这是循环。
while(name == "" || name == null){
name = JOptionPane.showInputDialog("Enter you're name:");
}
有人能为我提供一些见解吗?
答案 0 :(得分:1)
请勿将字符串与name == ""
进行比较。使用"".equals(name)
或在您的情况下使用name.isEmpty()
(自Java 6起可用)。
==
用于比较引用,而不是对象的值。更多信息here。
将您的代码更改为:
while(name == null || name.isEmpty()){
name = JOptionPane.showInputDialog("Enter you're name:");
}
答案 1 :(得分:0)
答案 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并阻止其在后台运行。