Caeptn Geschrieben 10. Juni 2009 Geschrieben 10. Juni 2009 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
perdian Geschrieben 10. Juni 2009 Geschrieben 10. Juni 2009 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.
TDM Geschrieben 10. Juni 2009 Geschrieben 10. Juni 2009 Ich glaube bald kommt noch ein "java.lang.ArrayIndexOutOfBoundsException" - Thread. player geht von 0 - 19. :floet:
Caeptn Geschrieben 10. Juni 2009 Autor Geschrieben 10. Juni 2009 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 :-)
elSusto Geschrieben 11. Juni 2009 Geschrieben 11. Juni 2009 wenn die for schleife wirlich so erklärt ist im buch würde ich villt lieber hier weiter lesen
Caeptn Geschrieben 11. Juni 2009 Autor Geschrieben 11. Juni 2009 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
perdian Geschrieben 11. Juni 2009 Geschrieben 11. Juni 2009 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.
elSusto Geschrieben 12. Juni 2009 Geschrieben 12. Juni 2009 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden