当我尝试在标签上运行时,为什么会出现NullPointerException:
JLabel player1CurrentScore = new JLabel("" + matchPlay.returnPL1GamesWon(),
JLabel.CENTER);
是不是因为我不能像这样连接两个字符串?
理想情况下,我尝试将标签设置为播放器的分数,以便在需要时可以正确递增。
这是我的Exception stackdump:
java.lang.NullPointerException
at GUI.makeFrame(GUI.java:71)
at GUI.<init>(GUI.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at bluej.runtime.ExecServer$3.run(ExecServer.java:808)
答案 0 :(得分:3)
除非matchPlay为null或matchPlay.returnPL1GamesWon()本身抛出空指针异常,否则没有任何内容会导致空指针异常。
更新:基于异常来自GUI.makeFrame的事实,我不得不问你是否真的有图形显示?这是一个命令行应用程序,一个Swing应用程序,还是一个Applet?看起来你正在尝试创建一个没有图形上下文的JLabel。
答案 1 :(得分:3)
根据问题中的信息:引用matchPlay为空。
更新:鉴于matchPlay不能为null的信息,则在matchPlay上调用的方法必须抛出异常。检查前一个方法调用的堆栈跟踪,有助于查明问题。
答案 2 :(得分:0)
我设法回答了,
这是我在构造函数中分配字段的顺序
抱歉打扰
谢谢大家