0

当用户在输入对话框中没有输入任何内容时,它会结束下面的循环。我已经调试了代码,当用户什么都不输入时,名称确实是“”。

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

此外,当包含输入对话框的窗口关闭或取消时,程序不会退出循环。

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

4

5 回答 5

2

不要将字符串与name == "". "".equals(name)甚至在您的情况下使用or name.isEmpty()(自 Java 6 起可用)。

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

将您的代码更改为:

while(name == null || name.isEmpty()){
    name = JOptionPane.showInputDialog("Enter you're name:");
}
于 2013-02-08T17:49:15.670 回答
1

永远不要==用来比较Strings 中的 s Java

使用方法equals(String)

请参阅以下链接

于 2013-02-08T17:50:43.920 回答
0

使用“==”或“等于”有很大的不同。也尝试使用 equalsIgnoreCase() 来确定

while(name == null || name.equalsIgnoreCase("")){
        name = JOptionPane.showInputDialog("Enter you're name:");
    }
于 2013-02-08T17:51:34.840 回答
0

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

于 2013-02-08T17:56:22.997 回答
0

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

于 2020-04-04T15:43:59.000 回答