Array wird nicht übernommen NullPointerException

Sockee

Mitglied
Allgemein:

Hier habe ich nur die zwei nötigen Klassen für das Problem hineingeschrieben. Es wird versucht das Spiel "Wer war´s" in Java zu realisieren. Das ganze ist ein Schulprojekt (11.Klasse) , dass benotet wird :)

Problembeschreibung:

Ich möchte die Namen, des in der Klasse Spielbrett gespeicherten Arrays "obstsorten", mit der Methode ".getObstsorten(Zeile 162 Spielbrett)" in das Methodenlocale Array "sorten" der Klasse Spieler (Methode "suchen" Zeile 40) übernehmen.
Dies allerdings funktioniert nicht, da eine NullPointerException ausgelöst wird.
Das gleiche passiert mit dem Schlüsselarray (Klasse Spieler-Methode "suchen"-Zeile 51) mit der dazugehörigen getMethoden(Klasse Spielbrett-Zeile 171).
Wieso wird diese ausgelöst?

Java:
public class Spielbrett {
  
  private Spielfeld[] spielfelder;
  private Tier[] tier;
  private Verdaechtiger[] verdaechtiger;
  private Spielfigur figur;
  private Wuerfel wuerfel;
  
  // Wird versucht per getObstsorten zu bekommen (getObstsorten-Methode in Zeile 162 der Spielbrettklasse)
  private String[] obstsorten = {"Traube", "Banane", "Pfirsich", "Avocado", "Birne", "Pflaume", "Ananas", "Zitrone" };
  
  
  private String[] schluessel = {"Schlüssel", "Schlüssel", "Schlüssel", "Schlüssel"};
  
  
  public Spielbrett(){
    // Erzeugen des Würfels
    
    wuerfel = new Wuerfel(); 
    
    
    // Erzeugen der Tier
    
    tier = new Tier[8];
    tier[0] = new Tier("Esel");
    tier[1] = new Tier("Katze");
    tier[2] = new Tier("Schlange");
    tier[3] = new Tier("Hund");
    tier[4] = new Tier("Pferd");
    tier[5] = new Tier("Maus");
    tier[6] = new Tier("Vogel");
    tier[7] = new Tier("Frodo");
    
    for (int i = 0;i<tier.length;i++){
      System.out.println(tier[i]);
    }
    
    //Erzeugen der Verdächtigen
    
    verdaechtiger = new Verdaechtiger[8];
    verdaechtiger[0] = new Verdaechtiger("Koch",true,true,true,true);
    verdaechtiger[1] = new Verdaechtiger("Metzger",false,true,true,true);
    verdaechtiger[2] = new Verdaechtiger("Hofnarr",true,false,true,true);
    verdaechtiger[3] = new Verdaechtiger("PerverserZauberer",true,false,false,true);
    verdaechtiger[4] = new Verdaechtiger("Schmied",false,true,false,true);
    verdaechtiger[5] = new Verdaechtiger("Ork",false,false,true,true);
    verdaechtiger[6] = new Verdaechtiger("Gollum",false,false,false,false);
    verdaechtiger[7] = new Verdaechtiger("HE-MAN",false,false,false,true);
    for (int i = 0;i<tier.length;i++){
      System.out.println(verdaechtiger[i]);
    }
    
    // Erzeugen der Spielfelder
    
    spielfelder = new Spielfeld[8];
    spielfelder[0] = new Spielfeld("Schlafzimmer",tier[0],verdaechtiger[0]);
    spielfelder[1] = new Spielfeld("Arbeitszimmer",tier[1],verdaechtiger[1]);
    spielfelder[2] = new Spielfeld("Küche",tier[2],verdaechtiger[2]);
    spielfelder[3] = new Spielfeld("Kinderzimmer",tier[3],verdaechtiger[3]);
    spielfelder[4] = new Spielfeld("Wohnzimmer",tier[4],verdaechtiger[4]);
    spielfelder[5] = new Spielfeld("Badezimmer",tier[5],verdaechtiger[5]);
    spielfelder[6] = new Spielfeld("Turm",tier[6],verdaechtiger[6]);
    spielfelder[7] = new Spielfeld("Stall",tier[7],verdaechtiger[7]);
    
    // Spielfelder das Nächste
    spielfelder[1].setNaechstes(spielfelder[2]);
    spielfelder[2].setNaechstes(spielfelder[3]);
    spielfelder[3].setNaechstes(spielfelder[4]);
    spielfelder[4].setNaechstes(spielfelder[5]);
    spielfelder[5].setNaechstes(spielfelder[6]);
    spielfelder[6].setNaechstes(spielfelder[7]);
    spielfelder[7].setNaechstes(spielfelder[0]);
    spielfelder[0].setNaechstes(spielfelder[1]);
    
    //Soielfelder das Vorherige
    
    spielfelder[7].setVorheriges(spielfelder[0]);
    spielfelder[0].setVorheriges(spielfelder[7]);
    spielfelder[1].setVorheriges(spielfelder[6]);
    spielfelder[2].setVorheriges(spielfelder[5]);
    spielfelder[3].setVorheriges(spielfelder[4]);
    spielfelder[4].setVorheriges(spielfelder[3]);
    spielfelder[5].setVorheriges(spielfelder[2]);
    spielfelder[6].setVorheriges(spielfelder[1]);
    
    
    for (int i = 0;i<tier.length;i++){
      System.out.println(spielfelder[i]);
    }
    
    // Spielfigur erstellen
    figur = new Spielfigur(spielfelder[3]);
    
    // Obst zuweisen
    
    for (int i = 0;i<obstsorten.length ;i++ ) {
      int rnd = (int)(Math.random()*8);
      if (spielfelder[rnd].getObst()==null) {
        spielfelder[rnd].setObst(obstsorten[i]);
        for (int j = 0;j<tier.length;j++){
          System.out.println(spielfelder[j].getObst());
        } 
        System.out.println("\n");
      } // end of if
      else {
        i--;
        continue;
      } // end of if-else
    } // end of for
    for (int j = 0;j<tier.length;j++){
      System.out.println(spielfelder[j].getObst());
    } 
    // Schluessel setzten
    
    for (int i = 0;i<schluessel.length ;i++ ) {
      int rnd = (int)(Math.random()*8);
      if (spielfelder[rnd].getSchluessel()==null) {
        spielfelder[rnd].setSchluessel(schluessel[i]);
        
      } // end of if
      else {
        i--;
        continue;
      } // end of if-else
    } // end of for
    for (int j = 0;j<tier.length;j++){
      System.out.println(spielfelder[j].getSchluessel());
    } 
    // Ring verstecken
    
    int rnd = (int)(Math.random()*8);
    spielfelder[rnd].setTruhe(true);
    
    
    // Tiere den Schuldigen bekannt geben & die rnd Variable wird von "Ring verstecken" übernommen um das Feld des Schuldigen einfacher zu Bestimmen
    for (int i = 0;i<spielfelder.length ;i++ ) {
      spielfelder[i].getTier().setNameDesSchuldigen(spielfelder[rnd].getVerdaechtiger().getName());
    } // end of for
    
    
    // Tiere bekannt geben was sie Fressen möchten
    
    for (int i = 0;i<tier.length ;i++ ) {
      rnd = (int)(Math.random()*8);
      if (tier[rnd].getMoechteFressen()==null) {
        tier[rnd].setMoechteFressen(obstsorten[i]); 
      } // end of if
      else {
        i--;
        continue;
      } // end of if-else
    } // end of for
  }
  
  public Verdaechtiger[] getVerdaechtiger(){
    return verdaechtiger;
  }
  
  public Spielfeld[] getSpielfelder() {
    return spielfelder;
  }
  public String[] getObstsorten(){
    return obstsorten;
  }
  public void wegstreichenObstsorten(int i){
    obstsorten[i]=null;
  }
  public void wegstreichenSchluessel(int i){
    schluessel[i]=null;
  }
  public String[] getSchluessel(){
    return schluessel;
  } 
  public Spielfigur getFigur(){
    return figur;
  }
  public Wuerfel getWuerfel(){
    return wuerfel;
  }
}

Java:
public class Spieler {
  
  private String name;
  private Spielfigur figur;
  private Wuerfel wuerfel;
  private String[] gegensteande = new String[13];
  private Spielbrett brett;
  
  // konstruktor
  public Spieler(String name, String farbe, Spielfigur figur, Wuerfel wuerfel){;
    this.name = name;
    this.figur = figur;
    figur.setFarbe(farbe);
    this.wuerfel = wuerfel;
    
  }
  
  public void wuerfeln(){
    int augen = wuerfel.wuerfeln();
    figur.setzen(augen, Tastatur.readChar());
    wuerfel = null;
  }
  
  public String getName(){
    return name;
  }
  
  public Spielfigur getSpielfigur(){
    return figur;
  }
  
  public String suchen(){
    String[] sorten = new String[8];
    for (int i = 0;i<sorten.length ;i++ ) {
      // Ich möchte nun die Namen, des in der Klasse Spielbrett gespeicherten Arrays "obstsorten",mit der Methode ".getObstsorten(Zeile 162 Spielbrett)" in das Array "sorten" der Klasse Spieler übernehmen
      // Dies allerdings funktioniert nicht, da eine NullPointerException ausgelöst wird
      // Wieso wird diese ausgelöst? 
      sorten[i] = brett.getObstsorten()[i];
    } // end of for
    String[] schluessel = new String[8];
    for (int i = 0;i<schluessel.length ;i++ ) {
      // Selber Fall mit den Schlüsseln! siehe obere Beschreibung
      schluessel[i] = brett.getSchluessel()[i];
    } // end of for
    String gefundenerGegenstand="";
    
    
    if (figur.getStehtAuf().getObst().equals(null)) {
      for (int i = 0;i<schluessel.length ;i++ ) {
        if (figur.getStehtAuf().getSchluessel().equals(schluessel[i])) {
          gefundenerGegenstand = schluessel[i];
          brett.wegstreichenSchluessel(i);
          break;
        } // end of for
      } // end of for
    } // end of if
    else if(figur.getStehtAuf().getObst().equals(null) && figur.getStehtAuf().getSchluessel().equals(null)) {
      gefundenerGegenstand = "nichts";
    } // end of if-else
    else {
      for (int i = 0;i<sorten.length ;i++ ) {
        if (figur.getStehtAuf().getObst().equals(sorten[i])) {
          gegensteande[i] = sorten[i];
          brett.wegstreichenObstsorten(i);
          gefundenerGegenstand = gegensteande[i];
          break;
        } // end of if
      } // end of if
    } // end of if-else
    
    
    return gefundenerGegenstand;
  }
  
  public String sprechen(){
    String moechtefressen = figur.getStehtAuf().getTier().getMoechteFressen();
    return moechtefressen;
  }
  
  public String geben(){
    boolean inBesitzObst = false;
    String nameDesVerdaechtigen="";
    Spielfeld positionDesSchuldigen=null;
    String kleidung="";
    for (int i = 0;i<gegensteande.length ;i++ ) {
      if (figur.getStehtAuf().getTier().getMoechteFressen().equals(gegensteande[i])) {
        gegensteande[i]=null;
        inBesitzObst=true;
      } // end of if
    } // end of for
    if (inBesitzObst==true) {
      nameDesVerdaechtigen = figur.getStehtAuf().getTier().getNameDesSchuldigen();
    } // end of if
    for (int i = 0;i<brett.getVerdaechtiger().length ;i++ ) {
      if (brett.getVerdaechtiger()[i].equals(nameDesVerdaechtigen)) {
        int rnd = (int)(Math.random()*4)+1;
        String nameDesSchuldigen = figur.getStehtAuf().getTier().getNameDesSchuldigen();
        for (int j = 0;i<brett.getVerdaechtiger().length ;j++ ) {
          if (nameDesSchuldigen.equals(brett.getSpielfelder()[j].getVerdaechtiger().getName())) {
            positionDesSchuldigen = brett.getSpielfelder()[j];
          } // end of if
        } // end of for
        
        
        if (rnd==1) {
          boolean hatHut = positionDesSchuldigen.getVerdaechtiger().getHut();
          kleidung = "Hut";
        } // end of if
        if (rnd==2) {
          boolean hatSchuhe  = positionDesSchuldigen.getVerdaechtiger().getSchuhe();
          kleidung = "Schuhe";
        } // end of if
        if (rnd==3) {
          boolean hatOberteil  = positionDesSchuldigen.getVerdaechtiger().getOberteil();
          kleidung = "Oberteil";
        } // end of if
        if (rnd==4) {
          boolean hatHose  = positionDesSchuldigen.getVerdaechtiger().getHose();
          kleidung = "Hose";
        } // end of if
      } // end of if
    } // end of for
    return kleidung ;
  }
  
  public boolean oeffnenTruhe(){
    boolean gewonnen = false;
    boolean vorhandenSchluessel = false;
    for (int i = 0;i<gegensteande.length ;i++ ) {
      if (gegensteande[i].equals("Schlüssel")) {
        vorhandenSchluessel = true;
      } // end of if
    } // end of for
    if (vorhandenSchluessel = true) {
      if (figur.getStehtAuf().getTruhe()==true){
        gewonnen = true;
      }
    } // end of if
    return gewonnen;
  }
  
}
 

knilch

Bekanntes Mitglied
Hi,
ändre
Java:
private String[] obstsorten = {"Traube", "Banane", "Pfirsich", "Avocado", "Birne", "Pflaume", "Ananas", "Zitrone" };
private String[] schluessel = {"Schlüssel", "Schlüssel", "Schlüssel", "Schlüssel"};
in
Java:
private String[] obstsorten = new String[]{"Traube", "Banane", "Pfirsich", "Avocado", "Birne", "Pflaume", "Ananas", "Zitrone" };
private String[] schluessel = new String[]{"Schlüssel", "Schlüssel", "Schlüssel", "Schlüssel"};
 
Zuletzt bearbeitet:

Sockee

Mitglied
Hi, danke erstmal für die Rückmeldung.

Ich habe das versucht was du mir geschrieben hast, allerdings ändert es nichts :(
Komme auch von meiner Seite aus immer noch nicht nicht auf eine Lösung.
Die Socke
 

Sockee

Mitglied
Ich werde alle meine Klassen hier reinposten sodass ihr es vor augen habt. Fehlermeldung lautet wie folgt :

Exception in Thread "main" java.lang.NullPointerException
at Spieler.suchen<Spiler.java:46>
at TestUI.start<TestUI.java:17>
atTestUI.main<TestUI.java:25>

mehr ist das nicht.
Am Ende dieses Beitrages steht auch noch was anderes als Quelltext also ganz unten ^_^

Hier meine Kompletten Fachkonzeptklassen

Java:
public class Verdaechtiger {
  
  // Anfang Attribute
  private String name;
  private boolean hatHut;
  private boolean hatSchuhe;
  private boolean hatOberteil;
  private boolean hatHose;
  // Ende Attribute
  public Verdaechtiger(String name, boolean hut, boolean schuhe, boolean oberteil, boolean hose){
    this.name = name;
    hatSchuhe = schuhe;
    hatHut = hut;
    hatOberteil = oberteil;
    hatHose = hose;
  }
  // Anfang Methoden
  public String getName(){
    return name;
  }
  public boolean getHut(){
    return hatHut;
  }
  public boolean getSchuhe(){
    return hatSchuhe;
  }
  public boolean getOberteil(){
    return hatOberteil;
  }
  public boolean getHose(){
    return hatHose;
  }
  
  // Ende Methoden
} // end of Verdächtige

Java:
public class Wuerfel{
  //Attribute
  private int augenzahl=1;
  //Ende Attribute
  //Anfang Methode
  public int wuerfeln(){
    augenzahl=(int)(Math.random()*4)+1; 
    return augenzahl;
  }
  public int getAugenzahl(){
    return augenzahl; 
    
    }//Ende Methoden
    
}

Java:
public class Spielbrett {
  
  private Spielfeld[] spielfelder;
  private Tier[] tier;
  private Verdaechtiger[] verdaechtiger;
  private Spielfigur figur;
  private Wuerfel wuerfel;
  
  // Wird versucht per getObstsorten zu bekommen (getObstsorten-Methode in Zeile 162 der Spielbrettklasse)
  private String[] obstsorten = new String[] {"Traube", "Banane", "Pfirsich", "Avocado", "Birne", "Pflaume", "Ananas", "Zitrone" };
  
  
  private String[] schluessel = new String[] {"Schlüssel", "Schlüssel", "Schlüssel", "Schlüssel"};
  
  
  public Spielbrett(){
    // Erzeugen des Würfels
    
    wuerfel = new Wuerfel(); 
    
    
    // Erzeugen der Tier
    
    tier = new Tier[8];
    tier[0] = new Tier("Esel");
    tier[1] = new Tier("Katze");
    tier[2] = new Tier("Schlange");
    tier[3] = new Tier("Hund");
    tier[4] = new Tier("Pferd");
    tier[5] = new Tier("Maus");
    tier[6] = new Tier("Vogel");
    tier[7] = new Tier("Frodo");
    
    for (int i = 0;i<tier.length;i++){
      System.out.println(tier[i]);
    }
    
    //Erzeugen der Verdächtigen
    
    verdaechtiger = new Verdaechtiger[8];
    verdaechtiger[0] = new Verdaechtiger("Koch",true,true,true,true);
    verdaechtiger[1] = new Verdaechtiger("Metzger",false,true,true,true);
    verdaechtiger[2] = new Verdaechtiger("Hofnarr",true,false,true,true);
    verdaechtiger[3] = new Verdaechtiger("PerverserZauberer",true,false,false,true);
    verdaechtiger[4] = new Verdaechtiger("Schmied",false,true,false,true);
    verdaechtiger[5] = new Verdaechtiger("Ork",false,false,true,true);
    verdaechtiger[6] = new Verdaechtiger("Gollum",false,false,false,false);
    verdaechtiger[7] = new Verdaechtiger("HE-MAN",false,false,false,true);
    for (int i = 0;i<tier.length;i++){
      System.out.println(verdaechtiger[i]);
    }
    
    // Erzeugen der Spielfelder
    
    spielfelder = new Spielfeld[8];
    spielfelder[0] = new Spielfeld("Schlafzimmer",tier[0],verdaechtiger[0]);
    spielfelder[1] = new Spielfeld("Arbeitszimmer",tier[1],verdaechtiger[1]);
    spielfelder[2] = new Spielfeld("Küche",tier[2],verdaechtiger[2]);
    spielfelder[3] = new Spielfeld("Kinderzimmer",tier[3],verdaechtiger[3]);
    spielfelder[4] = new Spielfeld("Wohnzimmer",tier[4],verdaechtiger[4]);
    spielfelder[5] = new Spielfeld("Badezimmer",tier[5],verdaechtiger[5]);
    spielfelder[6] = new Spielfeld("Turm",tier[6],verdaechtiger[6]);
    spielfelder[7] = new Spielfeld("Stall",tier[7],verdaechtiger[7]);
    
    // Spielfelder das Nächste
    spielfelder[1].setNaechstes(spielfelder[2]);
    spielfelder[2].setNaechstes(spielfelder[3]);
    spielfelder[3].setNaechstes(spielfelder[4]);
    spielfelder[4].setNaechstes(spielfelder[5]);
    spielfelder[5].setNaechstes(spielfelder[6]);
    spielfelder[6].setNaechstes(spielfelder[7]);
    spielfelder[7].setNaechstes(spielfelder[0]);
    spielfelder[0].setNaechstes(spielfelder[1]);
    
    //Soielfelder das Vorherige
    
    spielfelder[7].setVorheriges(spielfelder[0]);
    spielfelder[0].setVorheriges(spielfelder[7]);
    spielfelder[1].setVorheriges(spielfelder[6]);
    spielfelder[2].setVorheriges(spielfelder[5]);
    spielfelder[3].setVorheriges(spielfelder[4]);
    spielfelder[4].setVorheriges(spielfelder[3]);
    spielfelder[5].setVorheriges(spielfelder[2]);
    spielfelder[6].setVorheriges(spielfelder[1]);
    
    
    for (int i = 0;i<tier.length;i++){
      System.out.println(spielfelder[i]);
    }
    
    // Spielfigur erstellen
    figur = new Spielfigur(spielfelder[3]);
    
    // Obst zuweisen
    
    for (int i = 0;i<obstsorten.length ;i++ ) {
      int rnd = (int)(Math.random()*8);
      if (spielfelder[rnd].getObst()==null) {
        spielfelder[rnd].setObst(obstsorten[i]);
        for (int j = 0;j<tier.length;j++){
          System.out.println(spielfelder[j].getObst());
        } 
        System.out.println("\n");
      } // end of if
      else {
        i--;
        continue;
      } // end of if-else
    } // end of for
    for (int j = 0;j<tier.length;j++){
      System.out.println(spielfelder[j].getObst());
    } 
    // Schluessel setzten
    
    for (int i = 0;i<schluessel.length ;i++ ) {
      int rnd = (int)(Math.random()*8);
      if (spielfelder[rnd].getSchluessel()==null) {
        spielfelder[rnd].setSchluessel(schluessel[i]);
        
      } // end of if
      else {
        i--;
        continue;
      } // end of if-else
    } // end of for
    for (int j = 0;j<tier.length;j++){
      System.out.println(spielfelder[j].getSchluessel());
    } 
    // Ring verstecken
    
    int rnd = (int)(Math.random()*8);
    spielfelder[rnd].setTruhe(true);
    
    
    // Tiere den Schuldigen bekannt geben & die rnd Variable wird von "Ring verstecken" übernommen um das Feld des Schuldigen einfacher zu Bestimmen
    for (int i = 0;i<spielfelder.length ;i++ ) {
      spielfelder[i].getTier().setNameDesSchuldigen(spielfelder[rnd].getVerdaechtiger().getName());
    } // end of for
    
    
    // Tiere bekannt geben was sie Fressen möchten
    
    for (int i = 0;i<tier.length ;i++ ) {
      rnd = (int)(Math.random()*8);
      if (tier[rnd].getMoechteFressen()==null) {
        tier[rnd].setMoechteFressen(obstsorten[i]); 
      } // end of if
      else {
        i--;
        continue;
      } // end of if-else
    } // end of for
  }
  
  public Verdaechtiger[] getVerdaechtiger(){
    return verdaechtiger;
  }
  
  public Spielfeld[] getSpielfelder() {
    return spielfelder;
  }
  public String[] getObstsorten(){
    return obstsorten;
  }
  public void wegstreichenObstsorten(int i){
    obstsorten[i]=null;
  }
  public void wegstreichenSchluessel(int i){
    schluessel[i]=null;
  }
  public String[] getSchluessel(){
    return schluessel;
  } 
  public Spielfigur getFigur(){
    return figur;
  }
  public Wuerfel getWuerfel(){
    return wuerfel;
  }
}

Java:
public class Spieler {
  
  private String name;
  private Spielfigur figur;
  private Wuerfel wuerfel;
  private String[] gegensteande = new String[13];
  private Spielbrett brett;
  
  // konstruktor
  public Spieler(String name, String farbe, Spielfigur figur, Wuerfel wuerfel){;
    this.name = name;
    this.figur = figur;
    figur.setFarbe(farbe);
    this.wuerfel = wuerfel;
    
  }
  
  public void wuerfeln(){
    int augen = wuerfel.wuerfeln();
    figur.setzen(augen, Tastatur.readChar());
    wuerfel = null;
  }
  
  public String getName(){
    return name;
  }
  
  public Spielfigur getSpielfigur(){
    return figur;
  }
  
  public String suchen(){
    String[] sorten = new String[8];
    for (int i = 0;i<sorten.length ;i++ ) {
      // Ich möchte nun die Namen, des in der Klasse Spielbrett gespeicherten Arrays "obstsorten",mit der Methode ".getObstsorten(Zeile 162 Spielbrett)" in das Array "sorten" der Klasse Spieler übernehmen
      // Dies allerdings funktioniert nicht, da eine NullPointerException ausgelöst wird
      // Wieso wird diese ausgelöst? 
      sorten[i] = brett.getObstsorten()[i];
    } // end of for
    String[] schluessel = new String[8];
    for (int i = 0;i<schluessel.length ;i++ ) {
      // Selber Fall mit den Schlüsseln! siehe obere Beschreibung
      schluessel[i] = brett.getSchluessel()[i];
    } // end of for
    String gefundenerGegenstand="";
    
    
    if (figur.getStehtAuf().getObst().equals(null)) {
      for (int i = 0;i<schluessel.length ;i++ ) {
        if (figur.getStehtAuf().getSchluessel().equals(schluessel[i])) {
          gefundenerGegenstand = schluessel[i];
          brett.wegstreichenSchluessel(i);
          break;
        } // end of for
      } // end of for
    } // end of if
    else if(figur.getStehtAuf().getObst().equals(null) && figur.getStehtAuf().getSchluessel().equals(null)) {
      gefundenerGegenstand = "nichts";
    } // end of if-else
    else {
      for (int i = 0;i<sorten.length ;i++ ) {
        if (figur.getStehtAuf().getObst().equals(sorten[i])) {
          gegensteande[i] = sorten[i];
          brett.wegstreichenObstsorten(i);
          gefundenerGegenstand = gegensteande[i];
          break;
        } // end of if
      } // end of if
    } // end of if-else
    
    
    return gefundenerGegenstand;
  }
  
  public String sprechen(){
    String moechtefressen = figur.getStehtAuf().getTier().getMoechteFressen();
    return moechtefressen;
  }
  
  public String geben(){
    boolean inBesitzObst = false;
    String nameDesVerdaechtigen="";
    Spielfeld positionDesSchuldigen=null;
    String kleidung="";
    for (int i = 0;i<gegensteande.length ;i++ ) {
      if (figur.getStehtAuf().getTier().getMoechteFressen().equals(gegensteande[i])) {
        gegensteande[i]=null;
        inBesitzObst=true;
      } // end of if
    } // end of for
    if (inBesitzObst==true) {
      nameDesVerdaechtigen = figur.getStehtAuf().getTier().getNameDesSchuldigen();
    } // end of if
    for (int i = 0;i<brett.getVerdaechtiger().length ;i++ ) {
      if (brett.getVerdaechtiger()[i].equals(nameDesVerdaechtigen)) {
        int rnd = (int)(Math.random()*4)+1;
        String nameDesSchuldigen = figur.getStehtAuf().getTier().getNameDesSchuldigen();
        for (int j = 0;i<brett.getVerdaechtiger().length ;j++ ) {
          if (nameDesSchuldigen.equals(brett.getSpielfelder()[j].getVerdaechtiger().getName())) {
            positionDesSchuldigen = brett.getSpielfelder()[j];
          } // end of if
        } // end of for
        
        
        if (rnd==1) {
          boolean hatHut = positionDesSchuldigen.getVerdaechtiger().getHut();
          kleidung = "Hut";
        } // end of if
        if (rnd==2) {
          boolean hatSchuhe  = positionDesSchuldigen.getVerdaechtiger().getSchuhe();
          kleidung = "Schuhe";
        } // end of if
        if (rnd==3) {
          boolean hatOberteil  = positionDesSchuldigen.getVerdaechtiger().getOberteil();
          kleidung = "Oberteil";
        } // end of if
        if (rnd==4) {
          boolean hatHose  = positionDesSchuldigen.getVerdaechtiger().getHose();
          kleidung = "Hose";
        } // end of if
      } // end of if
    } // end of for
    return kleidung ;
  }
  
  public boolean oeffnenTruhe(){
    boolean gewonnen = false;
    boolean vorhandenSchluessel = false;
    for (int i = 0;i<gegensteande.length ;i++ ) {
      if (gegensteande[i].equals("Schlüssel")) {
        vorhandenSchluessel = true;
      } // end of if
    } // end of for
    if (vorhandenSchluessel = true) {
      if (figur.getStehtAuf().getTruhe()==true){
        gewonnen = true;
      }
    } // end of if
    return gewonnen;
  }
  
} // end of class Spieler

Java:
public class Spielfeld {
  
  private Spielfeld naechstes;
  private Spielfeld vorheriges;
  private Spielfigur figur;
  private Tier tier;
  private Verdaechtiger verdaechtiger;
  private boolean truhe;
  private String obst;
  private String nameDesFeldes;
  private String schluessel;
  
  public Spielfeld(String name, Tier tier, Verdaechtiger verdaechtiger){
    figur = null;
    nameDesFeldes = name;
    this.tier = tier;
    this.verdaechtiger=verdaechtiger;  
  }
  
  public Spielfeld getNaechstes(){
    return naechstes;
  }
  
  public Spielfeld getVorheriges(){
    return vorheriges;
  }
  
  public void setNaechstes(Spielfeld naechstes){
    this.naechstes = naechstes;
  }
  public Verdaechtiger getVerdaechtiger(){
    return verdaechtiger; 
  }
  public void setVorheriges(Spielfeld vorheriges){
    this.vorheriges = vorheriges;
  }
  
  public Spielfigur getSpielfigur(){
    return figur;
  }
  
  public void setSpielfigur(Spielfigur figur){
    this.figur = figur;
  }
  public String getObst(){
    return obst;
  }
  public String getSchluessel(){
    return schluessel;
  }
  public Tier getTier(){
    return tier;
  }
  public boolean getTruhe(){
    return truhe;
  }
  public void setObst(String obst){
    this.obst=obst;
  }
  public void setSchluessel(String schluessel){
    this.schluessel = schluessel;
  }
  public void setTruhe(boolean truhe){
    this.truhe = truhe;
  }
}
 // end of class Spielfeld

Java:
public class Spielfigur {
  
  private String farbe;
  private Spielfeld stehtAuf;
  private int auswahl;
  public Spielfigur (Spielfeld anfang) {;
    stehtAuf =anfang;
   
  }
  
  public String getFarbe() {
    return farbe;
  }
  public void setFarbe(String farbe){
    this.farbe = farbe;
  }
  
  public Spielfeld getStehtAuf() {
    return stehtAuf;
  }
  
  public void setStehtAuf(Spielfeld stehtAuf) {
    this.stehtAuf = stehtAuf;
  }
  
  public void setzen (int augenzahl, char auswahl) {
    switch (auswahl) {
      case '>' :
      
      for (int i = 0;i < augenzahl ;i++ ) {
        stehtAuf = stehtAuf.getNaechstes();
      } // end of for
      break;
      
      case '<' :
      for (int i = 0;i < augenzahl ;i++ ) {
        stehtAuf = stehtAuf.getVorheriges();
      } // end of for
      
      break;
    } // end of switch
  }

  public void setAuswahl(int auswahl){
    this.auswahl = auswahl;
  }
 }

Java:
import java.util.*;
public class Tastatur{
  
  
  static Scanner sc = new Scanner (System.in); //Globale Variable
  
  //Methoden
  
  public static int readInt(){
    
    while (true) {
      //ausnahmebehandlung
      
      try{ //Versuch mal eine gefährliche Operation{
        
        int var1; //lokale variable
        var1 = sc.nextInt();
        return var1;
      }
      
      catch(InputMismatchException e){
        sc.nextLine();
        System.out.println("Bitte ganze Zahl eingeben!");
        
      }
    }
  }
  
  public static double readDouble(){
    while(true){
      try{
        double var1;
        var1 = sc.nextDouble();
        return var1;
      }
      
      catch(InputMismatchException e){
        sc.nextLine();
        System.out.println("Bitte Zahl eingeben!");
      }
    }
  }
  
  public static char readChar(){
    while (true) {
      String m = sc.next();
      char auswahl = m.charAt(0);
      
      if (m.length()>1) {
        sc.nextLine();
        System.out.println("ihr wert ist zu groß");
        
      }
      else{
        return auswahl;
      }
    }
  }
  public static String read(){
    String m= sc.next();
    return m;
  }
}

Java:
public class TestUI {
  public void start(){
    Spielbrett brett = new Spielbrett();
    System.out.println("Bitte Name und Farbe eingeben");
    Spieler sp = new Spieler(Tastatur.read(), Tastatur.read(), brett.getFigur(), brett.getWuerfel());
    
    
    
    sp.suchen();
    
    
    
  }
  public static void main(String[] args) {
    TestUI start = new TestUI();
    start.start();
  } // end of main

} // end of class TestUI

Java:
public class Tier {
  
  private String tiername;
  private String moechteFressen;
  private String nameDesSchuldigen;
  
  public Tier(String tiername){
    this.tiername = tiername;
  }
  
  public String getMoechteFressen(){
    return moechteFressen;
  }
  public String getNameDesSchuldigen(){
    return nameDesSchuldigen;
  }
  public void setNameDesSchuldigen(String nameDesSchuldigen){
    this.nameDesSchuldigen = nameDesSchuldigen; 
  }
  public void setMoechteFressen(String moechteFressen){
    this.moechteFressen = moechteFressen;
  }
}

Finaly... Wollte eigentlich nicht alles rein posten, weil es doch schon recht viel ist, aber das was man nicht braucht kann man ja einfach überlesen.

Wie gesagt meine Problematik steht im ersten Beitrag. Das ist aktuell der Punkt an dem ich hänge.
Bedanke mich auch nochmal für die Interesse :D
 

Daelras

Mitglied
Die Variable brett auf deinem Spieler-Objekt ist einfach nicht gesetzt und daher null, was die Exception erklärt. Eine Möglichkeit das zu beheben ist, dem Spieler bei der Erstellung das Spielbrett-Objekt zu übergeben und die Variable entsprechend zu setzen.
 

Sockee

Mitglied
Das war es! Vielen dank Daelras und auch die anderen die sich die Mühe gemacht haben.

Die Klasse Spieler kannte das brett nicht, weil ich es einfach vergessen habe der Variable zuzuweisen :autsch:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
Bluebird209 Array wird nicht an Methode übergeben Java Basics - Anfänger-Themen 7
E Methoden 2D Array wird in der Methode nicht geändert/gespeichert Java Basics - Anfänger-Themen 5
C Array Aktualisierung wird nicht im Tooltip angezeigt Java Basics - Anfänger-Themen 2
A Array wird nicht durchlaufen Java Basics - Anfänger-Themen 10
M Array wird beim Neuaufruf nicht neu initialisiert Java Basics - Anfänger-Themen 9
A Ein Array aus einer Klasse wird nicht sauber abgefüllt Java Basics - Anfänger-Themen 4
I Array und variable gleicher wert, wird jedoch nicht erkannt Java Basics - Anfänger-Themen 4
B Array von Choice wird nicht von getSelectedItem erkannt Java Basics - Anfänger-Themen 3
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
A char array wird überschrieben Java Basics - Anfänger-Themen 6
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
P Array wird automatisch überschrieben Java Basics - Anfänger-Themen 3
B Gefülltes Array wird mit nullwerten übergeben Java Basics - Anfänger-Themen 9
E Wie wird in Java ein Char-Array terminiert ? Java Basics - Anfänger-Themen 15
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
D Array wird immer mir 100 für jeden Wert initialisiert? Java Basics - Anfänger-Themen 2
Silvascus Array, der mit dem Namen, der per Methode übergeben wird, erstellt wird Java Basics - Anfänger-Themen 5
C Array wird falsch befüllt? Java Basics - Anfänger-Themen 7
T Array wird überschrieben Java Basics - Anfänger-Themen 4
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
D Array Objekt wird überschrieben Java Basics - Anfänger-Themen 3
L Wie wird ein 2 Dimensionales Array befüllt? Java Basics - Anfänger-Themen 6
H Array wird verändert ohne Rückgabe? Java Basics - Anfänger-Themen 7
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
F Variablen String-Array wird ungewollt "überschreiben" Java Basics - Anfänger-Themen 7
D Erste Schritte Warum wird bei einem Array die Länge über Length ausgegeben? Java Basics - Anfänger-Themen 6
A OOP Array wird ohne grund sortiert?! Java Basics - Anfänger-Themen 4
B Array-objekte,. Es wird ein Fehler ausgegeben Java Basics - Anfänger-Themen 11
A Array wird überschrieben Java Basics - Anfänger-Themen 5
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben