Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen
Hallo mal eine frage ich hab in einer Methode x ein Array erstellt wie kann ich dann in einer anderen Methode y auf das Array aus Methode x zugreifen bzw. die Werte ausgeben aus dem array
Grundsätzlich hast Du zwei Möglichkeiten: entweder übergibst Du das Array (quasi aktiv) an die aufgerufene Methode oder aber Du verwendest eine Instanzvariable:
Java:
class Test {
private int[] arr;
public void initialisiereArray() {
arr = new int[]{1,2,3,4};
}
public void zeigeArray() {
System.out.println(java.util.Arrays.toString(arr));
}
}
Java:
class Test {
public void machWas() {
int[] arr = {1,2,3,4};
double mittelwert = berechneMittelwert(arr);
System.out.println(mittelwert);
}
public double berechneMittelwert(int[] werte) {
double sum = 0d;
for (int wert : werte) {
sum += wert;
}
return sum / werte.length;
}
}
Entweder du gibst das erstellte Array als Rückgabewert zurück oder das Array ist eine Instanzvariable der Klasse.
Edit: Die dritte Möglichkeit, angelehnt an den Code von @mihe7
Java:
class Test {
public int[] createArray() {
return new int[]{1,2,3,4}; // Array als Rückgabewert
}
public void machWas() {
int[] arr = createArray();
System.out.println(java.util.Arrays.toString(arr));
}
}
Generell solltest du versuchen ein System in dein Spiel zu bringen, indem du es vernünftig in Klassen unterteilst. Du hast ja bereits einige davon.
Entweder du gibst das erstellte Array als Rückgabewert zurück oder das Array ist eine Instanzvariable der Klasse.
Edit: Die dritte Möglichkeit, angelehnt an den Code von @mihe7
Java:
class Test {
public int[] createArray() {
return new int[]{1,2,3,4}; // Array als Rückgabewert
}
public void machWas() {
int[] arr = createArray();
System.out.println(java.util.Arrays.toString(arr));
}
}
Generell solltest du versuchen ein System in dein Spiel zu bringen, indem du es vernünftig in Klassen unterteilst. Du hast ja bereits einige davon.
private static Superhero[] createSuperhero1(){
Superhero[]team = new Superhero[5];
if(Superhero.anzahlHeroes <4) {
do {
//Superpower erstellen
Superpower super1 = new Superpower("Eispickel");
Superpower super2 = new Superpower("Feurball");
Superpower super3 = new Superpower("Blattschwert");
Superpower super4 = new Superpower("Wasserstoß");
Superpower super5 = new Superpower("Dunkelnebel");
Superpower super6 = new Superpower("Lichtsstrahl");
//Superpowerattribute setzen
super1.setactionDescription("schießt Eisplitter auf den Gegner");
super1.setid();
super2.setactionDescription("schießt einen Feuerball auf den Gegner");
super2.setid();
super3.setactionDescription("greift den Gegner mit einem Blattschwert an");
super3.setid();
super4.setactionDescription("Durchstößt den Gener mit Wasser");
super4.setid();
super5.setactionDescription("Umhüllt den Gegner mit Nebel");
super5.setid();
super6.setactionDescription("Durchdringt den Gegner mit einem Lichtstrahl");
super6.setid();
//Abfrage nach Namen
System.out.println("\nWelchen Namen soll der " +(Superhero.anzahlHeroes+1) + ". Held haben?");
//Scannerobjekt erstellen
Scanner scanner2 = new Scanner(System.in);
//Scannervariable erstellen
String name2 = scanner2.nextLine();
//Scanner schließen1
//Held erstellen
Superhero hero = new Superhero(name2);
hero.setID();
hero.setHealthpointsCurrent(50);
hero.setHealthpointsMax(50);
hero.setExperiencePoints(0);
hero.setReadytofight(true);
hero.setInFight(false);
hero.setAlive(true);
Random random1 = new Random();
int x = random1.nextInt(4);
if (x == 0) {
hero.setSuperpower1(super6);
hero.setSuperpower2(super5);
hero.setSuperpower3(super3);
}
if (x==1) {
hero.setSuperpower1(super5);
hero.setSuperpower2(super4);
hero.setSuperpower3(super2);
}
if (x==2) {
hero.setSuperpower1(super5);
hero.setSuperpower2(super6);
hero.setSuperpower3(super1);
}
if (x == 3) {
hero.setSuperpower1(super2);
hero.setSuperpower2(super1);
hero.setSuperpower3(super4);
}
team[Superhero.anzahlHeroes -1] = hero;
System.out.println("Der " +(Superhero.anzahlHeroes)+". Hero heißt " + hero.getName() +"\n") ;
System.out.println("Deine Fähigkeiten sind: \n1." + hero.getSuperpower1().getName() + "\n2." + hero.getSuperpower2().getName() +"\n3." + hero.getSuperpower3().getName());
}
while(Superhero.anzahlHeroes <5);
showMenu();
int choice = readUserInput();
handle(choice);
System.out.println("====================");
}
else {
System.out.println("Maximale Anzahl an Helden erreicht");
showMenu();
int choice = readUserInput();
handle(choice);
System.out.println("====================");
}
return team;
}
quasi dann soo? hab ich den return Wert richtig gesetzte?Weil ich hab das jetzt so gemacht und kann trotzdem nicht die Werte des Arrays in einer anderen Methode ausgeben
Anscheinend trifft die Bedingung innerhalb von createSuperhero() betreffs der Anzahl der Superhelden zu. Bedenke, dass bei jedem Aufruf der Methode versucht wird ein neues Array zu erstellen. Offenbar geht das aber nur einmal (wegen der Anzahl).
Um genaueres zu sagen, wissen wir zuwenig über deine Klassen.