我正在尝试用java设计一个计算器。我的代码还没有完成,但我设计了一个GUI,除了我试图实际计算结果时,它的工作原理。当我在我的计算器上按“=”时,我收到上述错误。这是我的代码:
问题已修复
我知道这是很多代码,所以我很抱歉,我也意识到可能还有其他错误,因为我对Java很新,我只是非常坚持我得到的错误目前并且不知道如何解决它,感谢任何帮助将不胜感激。
答案 0 :(得分:2)
你永远不会初始化calcOperands
- 所以在第60行,你使用:
calcOperands.add(operand);
... calcOperands
仍为null,导致异常。看起来您的其他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
是什么意思吗? (如果没有,你有没有试过找出来?)现在你知道了实际的答案,值得思考你自己如何达到它 - 诊断问题是软件开发的一个重要部分。