0

我试图诱使用户输入文件名,但没有成功。我只是使用输入对话框,因为路径和扩展名是预先确定的,我需要在用户输入后附加到文件名。正如标题所说,每当用户单击取消按钮时,我都会收到 NullPointerException 。由于输入对话框无法删除取消按钮,因此我采用了这种方法:

while (filename.equals(null) || filename.equals("")) {
    filename=JOptionPane.showInputDialog(this, "Please enter the filename.");
    if (filename.equals(null)) filename="";
}

我通常不会在这样的两个地方使用 filename.equals(null) ,但我分别尝试过,出于挫败感,我也一起尝试过。NullPointerException 仍然发生在该行:

if (filename.equals(null)) filename="";

有没有办法捕获取消按钮(null)或阻止它?

4

3 回答 3

4
  filename.equals(null) // Compare Object 

应该像

  filename == null // Compare Object references
于 2013-05-08T15:48:48.323 回答
1

尝试检查 null 像“filename == null”而不是 filename.equals(null),因为如果它是 null,你会得到 NullPointerException。

于 2013-05-08T15:51:17.163 回答
0

如前所述filename.equals(null) - 在这种情况下是不正确的。

.equals()方法比较 String 实例(在堆上)内的“值”,而不管两个(2)对象引用是否引用相同的 String 实例

比较两个对象引用的"==" operator值,看它们是否引用同一个 String 实例。

于 2013-05-08T15:54:16.870 回答