Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

java.lang.NullPointerException

Empfohlene Antworten

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

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.

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 :-)

wenn die for schleife wirlich so erklärt ist im buch würde ich villt lieber hier weiter lesen ;)

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

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.


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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.