NullPointerException

Status
Nicht offen für weitere Antworten.
Hi,

bei meinem Programm bekomme ich eine NullPointerException, wenn ich die Länge eines ObjektArrays abfrage(In der Funktion update() bei for(int i=0;i<ungeheuer.length;i++) ):



Code:
import java.lang.String;

public class BoulderDash {
int o,u;
public Stein[] stein;   
public Ungeheuer[] ungeheuer;
public Spieler spieler;

public String[] scene ={"MMMMMMM",
                        "A U O M",
                        "M   O M",
                        "M   O M",
                        "MMMMOMM",
                        "M   E M",
                        "M S   M",
                        "MMMMMMM"};//Spielfeld

public char[][] feld = new char[scene.length][scene[0].length()]; 

public class Stein{
    int[] pos;
    int bewegung;       //Anzahl der schon gefallen Momente
    public Stein(int i,int j){
        int[] pos=new int[2];        
        bewegung=0;
        pos[0]=i;
        pos[1]=j;
    }}

public class Spieler{
    int[] pos; 
    public Spieler(int i, int j){
        pos=new int[2];
        pos[0]=i;
        pos[1]=j;
    }}

public class Ungeheuer{
    int[] pos;
    int richtung;
    public Ungeheuer(int i, int j){
        pos=new int[2];
        richtung=1;
        pos[0]=i;
        pos[1]=j;
    }
}

public void update(){
int x,y;
for(int i=0;i<ungeheuer.length;i++)
{
    x=ungeheuer[i].pos[0];
    y=ungeheuer[i].pos[1];
        if(ungeheuer[i].richtung==0)//Richtung des Ungeheuers nach oben
            if(x>0)//Damit das Ungeheuer nicht außerhalb des Feldes kommt
                if(feld[x-1][y]==' '){  //Wenn das nächste Feld frei ist
                    feld[x][y]=' ';                         //Alte Spieler position löschen            
                    x=x-1;                                  //Horizontal verringern
                    feld[x][y]='U';                         //Neue Spieler position zuordnen
                    spieler.pos[0]=x;                       //Schritt dem Spieler zuweisen
                }  //Sonst gegen den Uhrzeigersinn drehen
                else {
                    ungeheuer[i].richtung=(ungeheuer[i].richtung+1)%3;
                    //Damit sich das Ungeheuer gegen dem Uhrzeigersinn 
                    //dreht. mod 3 damit es keine Richtung gibt, die das Ungeheuer nicht kennt
                }
        if(ungeheuer[i].richtung==1)//Richtung des Ungeheuers nach links
            if(y>0)//Damit das Ungeheuer nicht außerhalb des Feldes kommt
                if(feld[x][y-1]==' '){  //Wenn das nächste Feld frei ist
                    feld[x][y]=' ';                         //Alte Spieler position löschen            
                    y=y-1;                                  //Horizontal verringern
                    feld[x][y]='U';                         //Neue Spieler position zuordnen
                    spieler.pos[1]=y;                       //Schritt dem Spieler zuweisen
                }  //Sonst gegen den Uhrzeigersinn drehen
                else {
                    ungeheuer[i].richtung=(ungeheuer[i].richtung+1)%3;
                    //Damit sich das Ungeheuer gegen dem Uhrzeigersinn 
                    //dreht. mod 3 damit es keine Richtung gibt, die das Ungeheuer nicht kennt
                }
        if(ungeheuer[i].richtung==2)//Richtung des Ungeheuers nach unten
            if(x<feld.length-1)//Damit das Ungeheuer nicht außerhalb des Feldes kommt
                if(feld[x+1][y]==' '){  //Wenn das nächste Feld frei ist
                    feld[x][y]=' ';                         //Alte Spieler position löschen            
                    x=x+1;                                  //Horizontal verringern
                    feld[x][y]='U';                         //Neue Spieler position zuordnen
                    spieler.pos[0]=x;                       //Schritt dem Spieler zuweisen
                }  //Sonst gegen den Uhrzeigersinn drehen
                else {
                    ungeheuer[i].richtung=(ungeheuer[i].richtung+1)%3;
                    //Damit sich das Ungeheuer gegen dem Uhrzeigersinn 
                    //dreht. mod 3 damit es keine Richtung gibt, die das Ungeheuer nicht kennt
                }
        if(ungeheuer[i].richtung==3)//Richtung des Ungeheuers nach rechts
            if(y<feld[0].length-1)//Damit das Ungeheuer nicht außerhalb des Feldes kommt
                if(feld[x][y+1]==' '){  //Wenn das nächste Feld frei ist
                    feld[x][y]=' ';                         //Alte Spieler position löschen            
                    y=y+1;                                  //Horizontal verringern
                    feld[x][y]='U';                         //Neue Spieler position zuordnen
                    spieler.pos[1]=y;                       //Schritt dem Spieler zuweisen
                }  //Sonst gegen den Uhrzeigersinn drehen
                else {
                    ungeheuer[i].richtung=(ungeheuer[i].richtung+1)%3;
                    //Damit sich das Ungeheuer gegen dem Uhrzeigersinn 
                    //dreht. mod 3 damit es keine Richtung gibt, die das Ungeheuer nicht kennt
                }                
}

//Spielfeld ausgeben                
System.out.print("\f");  //Konsole löschen
    for(int i=0;i<scene[i].length();i++)
    {
        for(int j=0;j<feld[i].length;j++){
            System.out.print(feld[i][j]);
            }
        System.out.println("");
}}

public void step(int dir){
int i,j;
i=spieler.pos[0];
j=spieler.pos[1];
if(dir==0){ //Schritt nach oben
    if(i>0)//Damit der Spieler nicht außerhalb des Feldes kommt
        if(feld[i-1][j]=='E' || feld[i-1][j]==' '){  //Wenn das nächste Feld frei ist
             feld[i][j]=' ';                         //Alte Spieler position löschen            
             i=i-1;                                  //Horizontal verringern
             feld[i][j]='S';                         //Neue Spieler position zuordnen
             spieler.pos[0]=i;                       //Schritt dem Spieler zuweisen
            } //Sonst mache keinen Schritt    
}
if(dir==1){//links
    if(j>0)//Damit der Spieler nicht außerhalb des Feldes kommt
        if(feld[i][j-1]=='E' || feld[i][j-1]==' '){  //Wenn das nächste Feld frei ist
             feld[i][j]=' ';                         //Alte Spieler position löschen            
             j=j-1;                                  //Horizontal verringern
             feld[i][j]='S';                         //Neue Spieler position zuordnen             
             spieler.pos[1]=j;                       //Schritt dem Spieler zuweisen
            }//Sonst mache keinen Schritt
}
if(dir==2){//unten
    if(j<feld[i].length-1)//Damit der Spieler nicht außerhalb des Feldes kommt
        if(feld[i+1][j]=='E' || feld[i+1][j]==' '){  //Wenn das nächste Feld frei ist
             feld[i][j]=' ';                         //Alte Spieler position löschen            
             i=i+1;                                  //Horizontal verringern
             feld[i][j]='S';                         //Neue Spieler position zuordnen             
             spieler.pos[0]=i;                       //Schritt dem Spieler zuweisen
            }//Sonst mache keinen Schritt
}
if(dir==3){//rechts
    if(j<scene[i].length()-1)//Damit der Spieler nicht außerhalb des Feldes kommt
        if(feld[i][j+1]=='E' || feld[i][j+1]==' '){  //Wenn das nächste Feld frei ist
             feld[i][j]=' ';                         //Alte Spieler position löschen            
             j=j+1;                                  //Horizontal verringern
             feld[i][j]='S';                         //Neue Spieler position zuordnen             
             spieler.pos[1]=j;                       //Schritt dem Spieler zuweisen
            }//Sonst mache keinen Schritt
}
}

public void game(int[] dirs){
int u=0;        //Anzahl der Ungeheuer
int o=0;        //Anzahl der Stein

//Spielfeld in ein Char Array legen                 
for (int i = 0; i < scene.length; i++) 
    for(int j=0; j <scene[i].length();j++)
        feld[i][j]=scene[i].charAt(j);

//Anzahl der Steine und Ungeheuer zählen
for(int i=0; i<feld.length;i++)
    for(int j=0; j<feld[i].length;j++){
        if(feld[i][j]=='U')//Ungeheuer zählen
            u++;
        if(feld[i][j]=='O')//Steine zählen
            o++;
    }

Stein[] stein=new Stein[o];      //Speicherplatz für die Arrays reservieren
Ungeheuer[] ungeheuer=new Ungeheuer[u];
    
u=0;
o=0;
for(int i=0; i<feld.length;i++) //Arrays erzeugen und mit Inhalten füllen
    for(int j=0; j<feld[i].length;j++){
        if(feld[i][j]=='O'){//Stein Objekte erzeugen
            stein[o]=new Stein(i,j);
            o++;}        
        if(feld[i][j]=='U'){//Ungeheuer Objekte erzeugen
            ungeheuer[u]=new Ungeheuer(i,j);
            u++;}
        if(feld[i][j]=='S'){//Spieler Objekt erzeugen
            spieler=new Spieler(i,j);}
    }

    for(int i=0;i<dirs.length;i++){
        step(dirs[i]);  //Schritte der Objekte machen
        update();       //Neue Spielsituation auf der Konsole ausgeben    
        try {Thread.sleep(500);}    //Spiel langsamer machen
        catch (InterruptedException e){}
    }
}}
 

Der Müde Joe

Top Contributor
>bei meinem Programm bekomme ich eine NullPointerException, wenn ich die Länge eines ObjektArrays abfrage

na dann wird wohl ungeheuer nicht nicht initialisiert sein (ohne den Code zu lesen)

Breakpoint auch die Schleife dann siehst du es
 

JavaFred

Aktives Mitglied
In Zeile 181 deklarierst Du eine neue Variable ungeheuer, die die Exemplarvariable ungeheuer aus Zeile 7 überschattet.
 
Was muss ich denn da ändern, damit ich die Objekte Global benutzen, aber auch lokal erzeugen kann? Sprich auf die Objekte Ungeheuer und Stein muss ich später noch zugreifen können.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
T imagej-server NullPointerException Allgemeine Java-Themen 1
L Methoden NullpointerException Allgemeine Java-Themen 5
B OOP Auslöser für NullPointerException Allgemeine Java-Themen 3
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
S Exception in thread "main" java.lang.NullPointerException at FamilienApp.main(FamilienApp.java:15) Allgemeine Java-Themen 1
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
P wiedermal NullPointerException Allgemeine Java-Themen 2
kodela NullPointerException Allgemeine Java-Themen 2
L Variablen NullPointerException (RSA) Allgemeine Java-Themen 2
B NullPointerException bei @Inject JSF Allgemeine Java-Themen 0
Arif Probleme mit NullPointerException Allgemeine Java-Themen 2
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
D ByteBuffer getInt NullpointerException Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
T Compiler-Fehler NullpointerException! Allgemeine Java-Themen 7
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
L NullPointerException bei Instanzvarialen Allgemeine Java-Themen 3
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
I Fehler java.lang.NullPointerException Allgemeine Java-Themen 5
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
H java.lang.NullPointerException Allgemeine Java-Themen 5
L Interpreter-Fehler java.lang.NullPointerException Allgemeine Java-Themen 17
M JSON NullPointerException Allgemeine Java-Themen 5
M NullpointerException Allgemeine Java-Themen 2
L Eclipse NullPointerException Allgemeine Java-Themen 6
M Fitness-Rechner: NullPointerException Allgemeine Java-Themen 7
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
A java.lang.NullPointerException bei Schleife Allgemeine Java-Themen 3
K Unerklärliche nullpointerexception Allgemeine Java-Themen 6
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S javadoc java.lang.NullPointerException Allgemeine Java-Themen 2
K 3Dimensionales Feld - NullPointerException Allgemeine Java-Themen 2
J Compiler-Fehler NullPointerException Allgemeine Java-Themen 12
T Compiler-Fehler NullPointerException bei ADT LinkedTree Allgemeine Java-Themen 31
P Beim sortieren nullpointerexception Allgemeine Java-Themen 12
3 MP3-Finder wirft NullPointerException Allgemeine Java-Themen 13
M NullPointerException MenuItem Allgemeine Java-Themen 7
S Dialog einblenden bei NullPointerException Allgemeine Java-Themen 5
T DefaultTableModel NullPointerException Allgemeine Java-Themen 7
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
B NullPointerException ohne Angabe Allgemeine Java-Themen 5
F NullPointerException aber warum ? Allgemeine Java-Themen 9
F Array NullPointerException Allgemeine Java-Themen 26
B NullPointerException bei Wertzuweisung Allgemeine Java-Themen 3
C NullPointerException Allgemeine Java-Themen 9
MonsterBit java.lang.NullPointerException Allgemeine Java-Themen 2
O NullPointerException (wohl Denkfehler) Allgemeine Java-Themen 5
N Warum nullPointerException? Allgemeine Java-Themen 13
N Generics-NullpointerException Allgemeine Java-Themen 7
J NullPointerException mit HashMap Allgemeine Java-Themen 2
B NullPointerException bei new XStream() Allgemeine Java-Themen 2
J java.lang.NullPointerException bei Threadprogrammierung Allgemeine Java-Themen 9
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
V NullPointerException bei Vector Allgemeine Java-Themen 2
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
G NullPointerException Allgemeine Java-Themen 5
R Immer wieder NullPointerException Allgemeine Java-Themen 2
J Fehler: java.lang.NullPointerException Allgemeine Java-Themen 2
G NullPointerException, aber warum? Allgemeine Java-Themen 10
G NullPointerException problem Allgemeine Java-Themen 30
mhauert NullPointerException bei Zugriff auf JNI Objekt Allgemeine Java-Themen 6
J Folgender Fehler: java.lang.NullPointerException Allgemeine Java-Themen 4
T NullPointerException nach Java Update Allgemeine Java-Themen 4
G NullPointerException Allgemeine Java-Themen 6
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
H nullPointerException bei [ArrayList<String>.add(.)] Allgemeine Java-Themen 3
H NullPointerException Allgemeine Java-Themen 10
P NullPointerException Allgemeine Java-Themen 8
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
MQue NullPointerException Allgemeine Java-Themen 17
A NullPointerException Allgemeine Java-Themen 15
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
A NullPointerException Allgemeine Java-Themen 11
G Methode mit Schleifen NullPointerException Allgemeine Java-Themen 2
B Pobleme mit NullpointerException Allgemeine Java-Themen 13
M java.lang.NullPointerException im Chatclient Allgemeine Java-Themen 12
S NullPointerException beim Laden von BMPs Allgemeine Java-Themen 3
B java.lang.NullPointerException Allgemeine Java-Themen 11
M NullPointerException bei Subklasse ohne MediaTracker Allgemeine Java-Themen 12
G Problem mit NullPointerException Allgemeine Java-Themen 5
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
V Button schließen - NullPointerException Allgemeine Java-Themen 6
V NullPointerException Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben