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 Zitieren
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. Zitieren
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: Zitieren
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 :-) Zitieren
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 Zitieren
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 Zitieren
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. Zitieren
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 Zitieren
Empfohlene Beiträge
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.