尽管努力阅读如何生成空指针异常,但我完全不知道这个错误是如何在我的代码中生成的。
我认为这不会直接影响我的代码,因为我可以捕获异常,但在此之前,我仍然想了解有关错误的更多信息。
在生成错误的部分代码中,我正在打开一个新的输入对话框并等待用户输入。如果用户取消输入对话框,它只是意味着关闭对话框,它确实在其中。但是,每次我取消时它都会给我一个错误。
代码如下:
String newInput = JOptionPane.showInputDialog(null, "Your current holdings are: "
+ cable.getHoldings(), "Edit Holdings", JOptionPane.CANCEL_OPTION);
if (newInput.isEmpty())
{
//Error generated here
JOptionPane.showMessageDialog(null, "Please enter in a number!");
}
else
{...}
仅当用户按下输入对话框上的“确定”按钮时才会触发消息对话框。否则,如果用户取消或退出输入对话框,则会产生空指针异常错误。
有人介意帮助我并告诉我为什么会这样吗?
谢谢。
最佳答案
Returns: user's input, or null meaning the user canceled the input
所以它重新运行
null
如果用户取消对话框
来自showInputDialog
源码
if (value == UNINITIALIZED_VALUE) {
return null;
}
解决方案:在做任何事情之前进行无效检查
if (newInput==null || newInput.isEmpty())
您不需要 newInput.isEmpty()
因为它会检查字符串的长度,因此即使用户输入空格,长度也将为 1 或长度将为 null
在取消输入的情况下,无效性检查仅足以检查某些输入。
改进:您可以使用regex
来验证您的输入,是否为数字,就像这样
if (newInput==null || !newInput.matches("\\d+"))
{
JOptionPane.showMessageDialog(null, "Please enter in a number!");
}
\\d+
检查输入应至少包含一位或多位整数。
关于java - 取消 JOptionPane.showMessageDialog 时的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41256166/