我們有一個gui用於設置團隊,並且我們爲每個團隊分配2個驅動程序,加上2個引擎,1個機械師和1個aerodinamic plus 1最具戰略意義。 在我們的gui中,我們將它們全部設置好,然後初始化上述每個值。我們的圖形用戶界面是某種賽車模擬,它應該返回贏家。試圖解決線程「JavaFX應用程序線程」中的Java異常java.lang.NullPointerException
但是每次我們編譯的GUI,我們得到這個錯誤:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at models.Champ.calcRisk(Champ.java:75) at models.Champ.simtRace(Champ.java:102) at views.RScene.start(RScene.java:317) at views.RScene.lambda$0(RScene.java:107) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Node.fireEvent(Node.java:8413) at javafx.scene.control.Button.fire(Button.java:185) at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182) at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96) at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89) at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Scene$MouseHandler.process(Scene.java:3757) at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485) at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494) at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381) at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417) at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416) at com.sun.glass.ui.View.handleMouseEvent(View.java:555) at com.sun.glass.ui.View.notifyMouse(View.java:937) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) at java.lang.Thread.run(Unknown Source)
這真是奇怪,因爲我們不知道如何和爲什麼事情是零,我們debuged它,它似乎一切工作正常(通過調試)但是當你運行主要方法時,我們會得到所有這些錯誤。
我們有一個方法
public double calcRisk(TDriver td) {
double risk = MIN_RISK;
risk += td.getCar().getSetupStrategy();
risk += (100 - td.getTeam().getStrategist().getProficiency());
return risk;
}
,並在出方法來模擬我們有種族:
double crashRisk = calcRisk(td);
and this method:
private void beginRace() {
int raceNumber = Interact.game.getChamp().getNumber();
System.out.println("RN " + raceNumber);
StartInterac.game.getCham().simulateNextRace();
rScene();
}
和下一個錯誤是在下面的方法:
private void raceStartScene() {
.....rest of the code.......
raceBtn.setOnAction(e -> {
beginRace();
});
......rest of the code......
}
編輯:
我們amethod方法geeTeam它位於一個名爲DriverPerTeam
類我們把支票此方法:
public double calcRisk(TDriver td) {
System.out.println("---check----");
System.out.println("1 "+td.getTeam());
System.out.println("2 "+td.getTeam().getStrategist());
System.out.println("3 "+td.getTeam().getStrategist().getProficiency());
System.out.println("-------------");
double risk = MIN_RISK;
risk += td.getCar().getSetupStrategy();
risk += (100 - td.getTeam().getStrategist().getProficiency());
return risk;
}
,現在它返回的答案是這樣的:
---check---- 1 [email protected] 2 [email protected] 3 71.0 ------------- ---check---- 1 [email protected] 2 [email protected] 3 71.0 ------------- ---check---- 1 null Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at models.Champ.calcRisk(Champ.java:76) at models.Champ.simRace(Champ.java:108) at views.RScene.beginRace(RScene.java:317) . . . . ---check---- 1 [email protected] 2 [email protected] Exception in thread "JavaFX Application Thread" 3 71.0 ------------- ---check---- 1 [email protected] 2 [email protected] 3 71.0 ------------- ---check---- 1 null java.lang.NullPointerException at models.Champ.calcRisk(Champ.java:76) at models.Champ.simRace(Champ.java:108) at views.RScene.beginRace(RScene.java:317) . . . . . .
任何人都可以幫助我在這種情況下?
可能重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-doi-i-fix - ) – resueman
@resueman該解決方案沒有爲我們工作! –
哪一個是「Champ」類中的第75行 –