Zum Inhalt springen

java.lang.NullPointerException


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe leider ein Problem beim Kompilieren meines Übungsprojekts.

Sinn und Zweck ist es, eine "Mannschaft" zu erstellen, die dann wieder 20 "Player" erstellt.

Leider bekomme ich folgende Fehlermeldung und weiß nicht wieso:

Exception in thread "main" java.lang.NullPointerException

at Mannschaft.erstelleMannschaft(Mannschaft.java:12)

at SpielerApplikation.main(SpielerApplikation.java:10)

public class SpielerApplikation {

/**

* @param args

*/

public static void main(String[] args)

{

Mannschaft team1 = new Mannschaft();

team1.erstelleMannschaft();

//Player p1 = new Player();

//System.out.println(p1.berechneDurchschnittsstärke());

}

}

public class Mannschaft

{

int durchschnittsstärke;

public void erstelleMannschaft()

{

Player[] player = new Player[20];

for (int i=1; i<=player.length; i++)

{

durchschnittsstärke = player.berechneDurchschnittsstärke();

System.out.println(durchschnittsstärke);

}

//System.out.println(p1.berechneDurchschnittsstärke());

}

}

public class Player

{

int alter;

int durchschnittsstärke;

public int berechneDurchschnittsstärke()

{

Random_0_100 zufallszahl = new Random_0_100();

durchschnittsstärke = zufallszahl.getZufallszahl();

//System.out.println(durchschnittsstärke);

return durchschnittsstärke;

}

}

Vielen Dank im Voraus

Geschrieben
Leider bekomme ich folgende Fehlermeldung und weiß nicht wieso:
Dann solltest du zurück zu den Java Grundlagen gehen, das Tutorial (das du ja sicher gelesen hast) nochmal durchgehen und beim Punkt Referenzen und Analyse von Fehlermeldungen nochmal ansetzen.

Die Fehlermeldung sagt dir doch alles, was du brauchst - in Zeile 12 von Mannschaft.java wird ein Methodenaufruf auf ein Objekt durchgeführt, dass zu diesem Zeipunkt aber mit null belegt ist.

Genauer gesagt hier:


Player[] player = new Player[20];

  for (int i=1; i<=player.length; i++)

  {

    durchschnittsstärke = player[i].berechneDurchschnittsstärke();

...

Der Aufruf new Player[20] erstellt zwar das Array, nicht aber die einzelnen Objekte innerhalb des Arrays.

Geschrieben

Nein, ich benutze die Bücher Programmieren mit Java von Reinhard Schiedermeier und Java ist auch eine Insel, 6. Auflage.

Vielen Dank, letzteres Buch und dein Tip haben mir geholfen. Jetzt funktionierts.

@tdm: Ist mir grad noch vor dem erneuten Kompilieren aufgefallen :-)

Geschrieben

Zunächsta mal schon, erst danach ersetzen sie die Schleife durch foreach-Schleifen.:)

Hab leider schon ein neues Problem.

Ich möchte mit meiner main-Klasse ein Objekt erzeugen, z.B. mit

Mannschaft team1 = new Mannschaft();

team1.erstelleMannschaft();

die Funktion in der Klasse Mannschaft soll dann Spieler erstellen(automatisch)

mit

Player[] player = new Player[5];

...

...

funktioniert soweit auch ganz gut, aber meine "player" sind ja dann nur in dieser Methode vorhanden, wie kann ich sie in der ganzen Klasse Mannschaft verfügbar machen bzw. mein Problem lösen?

Mfg

Caeptn

Geschrieben
funktioniert soweit auch ganz gut, aber meine "player" sind ja dann nur in dieser Methode vorhanden, wie kann ich sie in der ganzen Klasse Mannschaft verfügbar machen bzw. mein Problem lösen?
Du möchtest dir nochmal (d)ein Java-Tutorial von vorne durchlesen und ein besonderes Augenmerk auf die Themen Objektorientierung, Datenkapselung und Sichbarkeiten legen.
Geschrieben


class Manschaft

{

   // member variablen (sind dem ganzen Object sichtbar) aber nicht nach

   //ausen da private

   private Player[] playerList;


   public void erstelleManschaft()

   {

      playerList = new Player[5];

      for(int i = 0; i < playerList.length; i++)

       {

            playerList[i] = new Player(deineParams);

       }

   }

}

so sollte das dann ungefähr aussehen dann ist die liste mit den player in dem gesamten object sichtbar, wenn du es aber auch n andere klassen weiter geben willt, musst du halt noch eine get Methode schreiben oder das Array direkt aus der Methode zurückgeben

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...