10. Juni 200916 j 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
10. Juni 200916 j 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.
10. Juni 200916 j Ich glaube bald kommt noch ein "java.lang.ArrayIndexOutOfBoundsException" - Thread. player geht von 0 - 19. :floet:
10. Juni 200916 j 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 :-)
11. Juni 200916 j wenn die for schleife wirlich so erklärt ist im buch würde ich villt lieber hier weiter lesen
11. Juni 200916 j 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
11. Juni 200916 j 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.
12. Juni 200916 j 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.