[英]Java - Null pointer exception
我正在創建一個簡單的視頻游戲,並且我一直在嘗試添加一些基本的碰撞檢測。 我是在我創建的entityCollision.class中執行此操作的。 碰撞檢測使用放置在AI字符外部的矩形。 我正在嘗試通過執行以下操作創建這些矩形:
Movement Movement;
AIMovement AIMovement;
Rectangle player = new Rectangle(Movement.x + 4, Movement.y, 56, 64);
Rectangle robot1 = new Rectangle(AIMovement.x[0] + 16, AIMovement.y[0], 32, 64);
Rectangle robot2 = new Rectangle(AIMovement.x[2] + 16, AIMovement.y[2], 32, 64);
Rectangle robot3 = new Rectangle(AIMovement.x[3] + 16, AIMovement.y[3], 32, 64);
Rectangle robot4 = new Rectangle(AIMovement.x[4] + 16, AIMovement.y[4], 32, 64);
在代碼中,我首先采用一種非靜態的方式來刷新該類。 之后,我嘗試使用其他類中的電線進行變量制作。 這是因為它給了我nullpointerexeption,就在第一個矩形的行上。 我正在使用的所有三個類都是在大約同一時間創建的,這是代碼:
Main Main;
Movement Movement;
AIMovement AIMovement;
Bullet Bullet;
entityCollision entityCollision;
public GamePanel() throws FileNotFoundException, InterruptedException{
Movement = new Movement();
AIMovement = new AIMovement();
Bullet = new Bullet();
entityCollision = new entityCollision();
像上面的代碼一樣,在創建代碼后立即得到錯誤消息。
我想知道在其他類變量不為null或其他獲取錯誤的方法之后創建了entityCollision類的情況下,該如何處理。
請發表評論,我將添加更多代碼或回答問題
你為什么從
Rectangle robot1 = new Rectangle(AIMovement.x[0] + 16, AIMovement.y[0], 32, 64);
至
Rectangle robot2 = new Rectangle(AIMovement.x[2] + 16, AIMovement.y[2], 32, 64);?
在您的第四個機器人上,如果AIMovement.x[4]
和/或對應的y
沒有任何東西(我假設沒有),那么您正在將一個空指針傳遞給Rectangle
類構造函數。
首先解決所有變量名與類名沖突的情況。 最好的方法是遵循以下約定:將每個變量命名為小寫字母,將每個類命名為大寫字母。
你有一大堆的這些情況,和他們說曖昧是否如Movement.x
獲取靜態變量x
從Movement
類或實例變量x
從Movement
變量-這是空,這樣表達會給出一個NullPointerException異常。
現在,您需要在使用之前設置這些變量。
如果您仍然對導致異常的原因不解,請在調試器中逐步執行代碼,查看異常發生的位置以及此時的null。 如果該語句具有多個可能導致異常的表達式,則可以將其拆分為較小的部分。
例如new Rectangle(aIMovement.x[0] + 16, aIMovement.y[0], 32, 64)
如果aIMovement
為null或aIMovement.x
為null或aIMovement.y
為null new Rectangle(aIMovement.x[0] + 16, aIMovement.y[0], 32, 64)
將引發NPE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.