java.lang.NullPointerException

3Cyb3r

Erfahrenes Mitglied
Hi,

ich bin noch Java Anfänger und kann keinen Fehler erkennen. Danke fpr die Hilfe
Ich bekomme folgenden Fehler in Eclips:

Code:
Exception in thread "main" java.lang.NullPointerException
	at Document.suffixEqual(Document.java:171)
	at Document.findSuffix(Document.java:186)
	at Document.addText(Document.java:212)
	at Document.<init>(Document.java:72)
	at Test.main(Test.java:13)

So nun mal die besage Stelle -> suffixEqual daruaf bauen die anderen FUnktionen auf

Java:
 private static boolean suffixEqual(String word1, String word2, int n) {
	if(n > word1.length() || n > word2.length()) {   // Zeile 171  // falls ich die if abfrage aus kommentiere kommt der fehler  bei der if abfrage in der for schleife
		return false;
    }
    
    for(int i = 1;  i < n; i++) {
      if(word1.charAt(word1.length() - i) != word2.charAt(word2.length() - i)) {
        return false;
      }
    }
    
    return true;
  }

EDIT: Also der Felher kommt immer bei der .length()-Methode eines Strings. Was habe ich falsch gemacht?

MFG
 
Zuletzt bearbeitet:
Hallo,

eigentlich lässt sich das Problem sehr leicht selbst lösen.
Die Exception sagt ja aus, dass eine Variable in dieser Zeile null ist. Also in diesem Fall eine dieser zwei Variablen.
Also schaut man einfach mal, ob beide Objekte initialisiert sind.

Eine weitere Möglichkeit wäre, man setzt einen Breakpoint in dieser Zeile. Startet den Debugger und schaut sich alle Variablen an, die sich in dieser Zeile befinden.

Gruß

Sascha
 
Java:
public class AMPEL
{
    LAMPE lampeOben, lampeMitte, lampeUnten;
    int positionX;
    int positionY;
    String ampelphase;
    char ausrichtung;
    
   AMPEL()
   {
    positionX = 1;
    positionY = 1;
    ampelphase = "rot";
    ausrichtung = 'S';
    
    lampeOben = new LAMPE();
    lampeMitte = new LAMPE();
    lampeUnten = new LAMPE();
    lampeOben.FarbeSetzen("rot");
    lampeMitte.FarbeSetzen("schwarz");
    lampeUnten.FarbeSetzen("schwarz");
    
    AmpelAnordnen();
    }
    
   public AMPEL (int xNeu, int yNeu, char ausrichtungNeu)
    {
        PositionSetzen(xNeu, yNeu);
        ampelphase = "rot";
        AusrichtungSetzen(ausrichtungNeu);
        
        lampeOben = new LAMPE();
        lampeMitte = new LAMPE();
        lampeUnten = new LAMPE();
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("schwarz");
   }       
     
    void PositionSetzen( int xNeu, int yNeu)
    {
        if ((xNeu <= 7) &&  ( xNeu >= -8) && (yNeu <= 7) && (yNeu >= -8))
        {
        positionX = xNeu;
        positionY = yNeu;

        }
    }
    
     void RotGelbSetzen()
    {
        ampelphase = "Rotgelb";
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("gelb");
        lampeUnten.FarbeSetzen("schwarz");
    
    }
    
    void GruenSetzen()
    {
        ampelphase = "gruen";
        lampeOben.FarbeSetzen("schwarz");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("gruen");
    
    }
    
    void RotSetzen() 
    {
        ampelphase = "Rot";
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("schwarz");
         
    }
    
    void GelbSetzen() 
    {
        ampelphase = "Gelb";
        lampeOben.FarbeSetzen("schwarz");
        lampeMitte.FarbeSetzen("gelb");
        lampeUnten.FarbeSetzen("schwarz");
         
    }
    
    void RechtsDrehen() 
    {
        
        lampeOben.PositionSetzen(positionX,positionY);
        lampeMitte.PositionSetzen(positionX+1,positionY);
        lampeUnten.PositionSetzen(positionX+2,positionY);
        
    }
    
    void LinksDrehen()
    {
        
        lampeOben.PositionSetzen(positionX,positionY);
        lampeMitte.PositionSetzen(positionX-1,positionY);
        lampeUnten.PositionSetzen(positionX-2,positionY);
        
    }
    
    void UmDrehen() 
    {
        
        lampeOben.PositionSetzen(positionX,positionY);
        lampeMitte.PositionSetzen(positionX,positionY-1);
        lampeUnten.PositionSetzen(positionX,positionY-2);
        
    }
    
    void HorizontalVerschieben(int B) 
    {
        
        lampeOben.PositionSetzen(positionX+B,positionY);
        lampeMitte.PositionSetzen(positionX+B,positionY+1);
        lampeUnten.PositionSetzen(positionX+B,positionY+2);
        
    }
    
    void VertikalVerschieben(int B) 
    {
        
        lampeOben.PositionSetzen(positionX,positionY+B);
        lampeMitte.PositionSetzen(positionX,positionY+B+1);
        lampeUnten.PositionSetzen(positionX,positionY+B+2);
        
    }  
   
    void AmpelAnordnen()
    {
        switch(ausrichtung)
        {
            case 'S':
             lampeOben.PositionSetzen(positionX,positionY);
             lampeMitte.PositionSetzen(positionX,positionY+1);
             lampeUnten.PositionSetzen(positionX,positionY+2);
             break;
            case 'W':
              lampeOben.PositionSetzen(positionX,positionY);
              lampeMitte.PositionSetzen(positionX-1,positionY);
              lampeUnten.PositionSetzen(positionX-1,positionY);
              break;
            case 'N':
              lampeOben.PositionSetzen(positionX,positionY);
              lampeMitte.PositionSetzen(positionX,positionY-1);
              lampeUnten.PositionSetzen(positionX,positionY-2);
              break;
            case 'O':
              lampeOben.PositionSetzen(positionX,positionY);
              lampeMitte.PositionSetzen(positionX+1,positionY);
              lampeUnten.PositionSetzen(positionX+2,positionY);
        
        
        
        }
    
    
    }
    
    
    void AusrichtungSetzen(char ausrichtungNeu)
    {
        if ((ausrichtungNeu == 'S') || (ausrichtungNeu == 'W') ||
            (ausrichtungNeu == 'N') || (ausrichtungNeu == 'O'))
        {
        ausrichtung = ausrichtungNeu;
        AmpelAnordnen();
        }
    
    }
    
    
    void Weiterschalten()
    {
       if (ampelphase == "Rot")
       {
        RotGelbSetzen();
       }
       else
       {
           if (ampelphase == "RotGelb")
           {
               GruenSetzen();
           }
           else
           {
               if (ampelphase == "Grün")
               {
                   GelbSetzen();
               }
               else
               {
                   RotSetzen();
               }
    
            }
        
       }
    }
}
und bei : lampeOben.PositionSetzen(positionX,positionY);
,laut meinem Lehrer hab ich eig alles richtig gemacht, aber wenn ich ein neue Kreuzung aufmachen will kommt dieser Fehler:

java.lang.NullPointerException:
null
 
Zuletzt bearbeitet von einem Moderator:
Hi
Kannst du den Code bitte in Java-Tags fassen? [code=java]// hier kommt der Code rein [/code]
Das erhöht die Lesbarkeit.
In welcher Zeile tritt der Fehler auf?
 
Java:
public class AMPEL
{
    LAMPE lampeOben, lampeMitte, lampeUnten;
    int positionX;
    int positionY;
    String ampelphase;
    char ausrichtung;
    
   AMPEL()
   {
    positionX = 1;
    positionY = 1;
    ampelphase = "rot";
    ausrichtung = 'S';
    
    lampeOben = new LAMPE();
    lampeMitte = new LAMPE();
    lampeUnten = new LAMPE();
    lampeOben.FarbeSetzen("rot");
    lampeMitte.FarbeSetzen("schwarz");
    lampeUnten.FarbeSetzen("schwarz");
    
    AmpelAnordnen();
    }
    
   public AMPEL (int xNeu, int yNeu, char ausrichtungNeu)
    {
        PositionSetzen(xNeu, yNeu);
        ampelphase = "rot";
        AusrichtungSetzen(ausrichtungNeu);
        
        lampeOben = new LAMPE();
        lampeMitte = new LAMPE();
        lampeUnten = new LAMPE();
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("schwarz");
   }       
     
    void PositionSetzen( int xNeu, int yNeu)
    {
        if ((xNeu <= 7) &&  ( xNeu >= -8) && (yNeu <= 7) && (yNeu >= -8))
        {
        positionX = xNeu;
        positionY = yNeu;

        }
    }
    
     void RotGelbSetzen()
    {
        ampelphase = "Rotgelb";
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("gelb");
        lampeUnten.FarbeSetzen("schwarz");
    
    }
    
    void GruenSetzen()
    {
        ampelphase = "gruen";
        lampeOben.FarbeSetzen("schwarz");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("gruen");
    
    }
    
    void RotSetzen() 
    {
        ampelphase = "Rot";
        lampeOben.FarbeSetzen("rot");
        lampeMitte.FarbeSetzen("schwarz");
        lampeUnten.FarbeSetzen("schwarz");
         
    }
    
    void GelbSetzen() 
    {
        ampelphase = "Gelb";
        lampeOben.FarbeSetzen("schwarz");
        lampeMitte.FarbeSetzen("gelb");
        lampeUnten.FarbeSetzen("schwarz");
         
    }
    
    void RechtsDrehen() 
    {
        
        lampeOben.PositionSetzen(positionX,positionY);
        lampeMitte.PositionSetzen(positionX+1,positionY);
        lampeUnten.PositionSetzen(positionX+2,positionY);
        
    }
    
    void LinksDrehen()
    {
        
        lampeOben.PositionSetzen(positionX,positionY);
        lampeMitte.PositionSetzen(positionX-1,positionY);
        lampeUnten.PositionSetzen(positionX-2,positionY);
        
    }
    
    void UmDrehen() 
    {
        
        lampeOben.PositionSetzen(positionX,positionY);
        lampeMitte.PositionSetzen(positionX,positionY-1);
        lampeUnten.PositionSetzen(positionX,positionY-2);
        
    }
    
    void HorizontalVerschieben(int B) 
    {
        
        lampeOben.PositionSetzen(positionX+B,positionY);
        lampeMitte.PositionSetzen(positionX+B,positionY+1);
        lampeUnten.PositionSetzen(positionX+B,positionY+2);
        
    }
    
    void VertikalVerschieben(int B) 
    {
        
        lampeOben.PositionSetzen(positionX,positionY+B);
        lampeMitte.PositionSetzen(positionX,positionY+B+1);
        lampeUnten.PositionSetzen(positionX,positionY+B+2);
        
    }  
   
    void AmpelAnordnen()
    {
        switch(ausrichtung)
        {
            case 'S':
             lampeOben.PositionSetzen(positionX,positionY);
             lampeMitte.PositionSetzen(positionX,positionY+1);
             lampeUnten.PositionSetzen(positionX,positionY+2);
             break;
            case 'W':
              lampeOben.PositionSetzen(positionX,positionY);
              lampeMitte.PositionSetzen(positionX-1,positionY);
              lampeUnten.PositionSetzen(positionX-1,positionY);
              break;
            case 'N':
              lampeOben.PositionSetzen(positionX,positionY);
              lampeMitte.PositionSetzen(positionX,positionY-1);
              lampeUnten.PositionSetzen(positionX,positionY-2);
              break;
            case 'O':
              lampeOben.PositionSetzen(positionX,positionY);
              lampeMitte.PositionSetzen(positionX+1,positionY);
              lampeUnten.PositionSetzen(positionX+2,positionY);
        
        
        
        }
    
    
    }
    
    
    void AusrichtungSetzen(char ausrichtungNeu)
    {
        if ((ausrichtungNeu == 'S') || (ausrichtungNeu == 'W') ||
            (ausrichtungNeu == 'N') || (ausrichtungNeu == 'O'))
        {
        ausrichtung = ausrichtungNeu;
        AmpelAnordnen();
        }
    
    }
    
    
    void Weiterschalten()
    {
       if (ampelphase == "Rot")
       {
        RotGelbSetzen();
       }
       else
       {
           if (ampelphase == "RotGelb")
           {
               GruenSetzen();
           }
           else
           {
               if (ampelphase == "Grün")
               {
                   GelbSetzen();
               }
               else
               {
                   RotSetzen();
               }
    
            }
        
       }
    }
}
und bei : lampeOben.PositionSetzen(positionX,positionY);
,laut meinem Lehrer hab ich eig alles richtig gemacht, aber wenn ich ein neue Kreuzung aufmachen will kommt dieser Fehler:

java.lang.NullPointerException:
null

Falls es noch jmd. interessiert: kann es sein das die Funktion FarbeSetzen() deklariert werden muss und daher die NullPointerException kommt?

Wäre vllt hilfreich für die, die sich diesen Tread angucken.


Gruß
 
Hi

bei fehlenden Funktionen/Methoden scheitert schon die Kompilierung.
Zum Ausführen des Programms kommt man damit gar nicht.
 

Neue Beiträge

Zurück