【问题标题】:JOptionPane showInputDialog cancel button NullPointerExceptionJOptionPane showInputDialog 取消按钮 NullPointerException
【发布时间】:2013-05-02 22:25:30
【问题描述】:

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

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

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

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

有什么方法可以捕获或阻止取消按钮(null)?

【问题讨论】:

    标签: java swing nullpointerexception joptionpane


    【解决方案1】:
      filename.equals(null) // Compare Object 
    

    应该是这样的

      filename == null // Compare Object references
    

    【讨论】:

    • @MaKR 没关系。比较对象或它们的引用总是令人困惑。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-01-21
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多