NullPointer während while(){}

Impoleon1111

Mitglied
Hallo ich habe folgendes Problem ich kriegen bei folgendem Code diese Exception raus
warum und kann mir jmd. helfen?
Code:
Java:
package com.ta.main;

import com.ta.gui.Monster;
import com.ta.gui.Player;

public class GameManager {
	String ppos = (Player.getPos());
	static Monster[] m;
	public static void main(String[] args) {
	Monster m1 = new Monster(10,10,20,"Troll1");
	Monster m2 = new Monster(10,10,20,"Troll2");
	Monster m3 = new Monster(10,10,20,"Troll3");
	m[0] = m1;
	m[1] = m2;
	m[3] = m3;
	}
	public static int PosUsed(int x, int y) {
		int cou = 0;
		String pos = (x+","+y);
		int c = 0;
		while(m[c] != null){
			if(m[c].getPos().equalsIgnoreCase(pos)) {
			cou++;	
			}
			c++;
		}
		return cou;
		
	}
}
Java:
package com.ta.gui;

import com.ta.main.GameManager;

public class Monster {
	static String name;
	static int c;
	static String pos;
	public Monster(int atk,int def,int lives,String name){
	name = this.name;
	genPos();	
	}

	public static void genPos() {
		int x = (int) ( 99 * Math.random()+1);
		int y = (int) ( 99 * Math.random()+1);
		pos = (x+","+y);
		c = (GameManager.PosUsed(x,y));
		System.out.println(name+": "+pos);
	}
	public static String getPos() {
		return pos;
		
	}
	public static void addSame(){
		if(c >= 2) {
			genPos();
		}
	}
}
Exception:
Code:
Exception in thread "main" java.lang.NullPointerException
	at com.ta.main.GameManager.PosUsed(GameManager.java:21)
	at com.ta.gui.Monster.genPos(Monster.java:18)
	at com.ta.gui.Monster.<init>(Monster.java:11)
	at com.ta.main.GameManager.main(GameManager.java:10)
Danke...
 
ich würde eher sagen: "Monster[] m" ist null. Es wird nirgens sowas wie: "Monster[] m = new Monster[3];" gemacht. Und wenn das Monster Array nur drei Einträge haben soll muss die "[3]" in dieser Zeile: "m[3] = m3;" durch eine "[2]" ersetzt werden.
 
Dein Problem ist hier:
Java:
while(m[c] != null){
// Weiterer Code
}
Bevor m[c] auf null überprüft wird, wird schon die Exception ausgelöst. Es wäre sinnvoller, die Monster der Reihe nach in monster[] zu schreiben (also der Reihe nach monster[0], monster[1] und moster[2] zu belegen) und dann mit lenght (oder wie das in Java heißt) die Anzahl der Monster herauszufinden und mit einer for-Schleife zu arbeiten.
 
Zum Fehler, auf den deine Frage abzielte, hast du ja von X5-599 bereits eine Antwort erhalten, daher einfach nur ein paar Dinge, die mir sonst noch aufgefallen sind:

Mach dir außerdem mal klar, was das Schlüsselwort
Code:
static
bedeutet und wann man es einsetzen sollte und wann nicht.

Die Zuweisung in der Monsterklasse in Zeile 10 sieht ebenfalls merkwürdig aus.
 

Neue Themen


Zurück
Oben