当用户在输入对话框中没有输入任何内容时,它会结束下面的循环。我已经调试了代码,当用户什么都不输入时,名称确实是“”。
while(name == "" || name == null){
name = JOptionPane.showInputDialog("Enter your name:");
}
此外,当包含输入对话框的窗口关闭或取消时,程序不会退出循环。
任何人都可以为我提供一些见解吗?
当用户在输入对话框中没有输入任何内容时,它会结束下面的循环。我已经调试了代码,当用户什么都不输入时,名称确实是“”。
while(name == "" || name == null){
name = JOptionPane.showInputDialog("Enter your name:");
}
此外,当包含输入对话框的窗口关闭或取消时,程序不会退出循环。
任何人都可以为我提供一些见解吗?
不要将字符串与name == ""
. "".equals(name)
甚至在您的情况下使用or name.isEmpty()
(自 Java 6 起可用)。
==
用于比较引用,而不是对象的值。更多信息在这里。
将您的代码更改为:
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)
窗口关闭不会导致程序退出循环是因为我需要通过使用参数 JFrame.EXIT_ON_CLOSE 调用 JFrame 的 setDefaultCloseOperation 来添加默认关闭操作。这会终止 JFrame 并防止它在窗口关闭后在后台运行。