我正在尝试用java设计一个计算器。我的代码尚未完成,但我设计了一个 GUI,除了当我尝试实际计算结果时之外,它都可以工作。当我在计算器上按“=”时,我收到上述错误。这是我的代码:
问题已解决
我知道这是很多代码,所以我对此感到抱歉,而且我也意识到其中可能还有其他错误,因为我对 Java 还很陌生,我只是对我遇到的错误感到非常困惑目前不知道如何修复它,非常感谢您的帮助。
最佳答案
你永远不会初始化calcOperands
- 所以在第 60 行,当您使用:
calcOperands.add(operand);
... calcOperands
仍然为空,导致异常。看来您的其他 ArrayList
也有同样的问题变量。您可以创建一个新列表作为声明的一部分 - 我还将变量本身更改为 List<E>
,像这样:
private final List<Double> calcOperands = new ArrayList<Double>();
private final List<String> calcOperators = new ArrayList<String>();
private final String stringInput;
private final List<Integer> priorityList = new ArrayList<String>();
private String[] splitString;
当然,我也将大部分变量设置为最终变量。您可能需要考虑是否真的想要 splitString
是可变的,仅当您调用 checkInput
时才设置...
(我没有查看您的其余代码。)
除了解决这些问题之外,您还应该退后一步,考虑一下诊断方面的问题。当你试图找出问题所在时,你卡在了哪一点上?您是否查看了堆栈跟踪并将问题定位到 StringCalculator.java
第 60 行?你明白什么吗NullPointerException
方法? (如果没有,您是否试图找出答案?)既然您知道了实际的答案,那么值得考虑一下您自己如何才能达到这个答案 - 诊断问题是软件开发的重要组成部分。
关于java - 线程中出现异常 "AWT-EventQueue-0"java.lang.NullPointerException Java GUI 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548560/