Ojekte mit den einzelnen Werten aus einem Array ausgeben lassen


Aleana

Grünschnabel
#1
Hallo ich brauch mal Eure Hilfe, stehe total auf dem Schlauch.
Ich versuch ein textuell basiertes Fantasy Spiel zu schreiben. Hierfür gibt
es Waffenobjekte die auch prima erstellt werden, in einem eindimensionalen Array.
Die Waffen haben einen Namen, einen Stärke Faktor, einen Faktor leben und einen für glück
- ist für die Kampfsimulation später wichtig. Also String, int, int, int in einem Konstruktor
der Klasse Waffen.

Nachdem ich die Objekte vom Benutzer hab zusammenstellen lassen und Werte per
Zufallsgenerator zugewiesen wurden , wird das Waffenobjekt im Array angelegt.
Soweit so gut.
Jetzt versuch ich aber die Namen und Werte jedes einzelnen Objektes aus dem Array auszulesen:
Code:
[..]
private static Waffen[] waffenHeld = new Waffen [10];
// Konstruktor
 public Waffen(String nameWaffe, int staerke, int glueck, int leben) {
  this.name   = nameWaffe ;
  this.staerke = staerke  ;
  this.glueck = glueck  ;
  this.leben  = leben  ;
 }
public static void ausgabeWaffenHeld() {
 for (int i = 0 ; i < 2 ; i++) {
 
  System.out.println("Waffe Nr.: " + (i+1) + " heisst: " + getWaffenName(waffenHeld[i]));
  System.out.println("Ihre Stärke ist \t: " + staerke);
  System.out.println("Ihre Lebenskraft ist : " + leben);
  System.out.println("Ihr Glücksfaktor ist : " + glueck);
 }
 public static  String getWaffenName(Waffen waffenHeld) {
 
   return name;
  }
------- Ausgabe ------
Waffe Nr.: 1 heisst: Schutzschild
Ihre Stärke ist : 3
Ihre Lebenskraft ist : 2
Ihr Glücksfaktor ist : 3
Waffe Nr.: 2 heisst: Schutzschild
Ihre Stärke ist : 3
Ihre Lebenskraft ist : 2
Ihr Glücksfaktor ist : 3

in dem Array liegt eine referenz auf : gegenstaende.Waffen@6fb554cc an index 0
und eine referenz auf : gegenstaende.Waffen@4cb2c100 an index 1

Für ein zweidimensionales hat es bereits funktioniert aber hier ...
Für Anregungen und Tipps wär ich echt dankbar.
LG
Alex
 

melmager

Erfahrenes Mitglied
#2
Erstmal brauchst du eine Trennung zwischen dem Array und den Werten.

sprich lege eine class Waffen an.

Code:
class Waffen {

public Waffen(String nameWaffe, int staerke, int glueck, int leben) {
  this.name   = nameWaffe ;
  this.staerke = staerke  ;
  this.glueck = glueck  ;
  this.leben  = leben  ;
 }

public void ausgabeWaffenHeld() {
  System.out.println("Waffe Nr.: " + (i+1) + " heisst: " + getWaffenName(waffenHeld[i]));
  System.out.println("Ihre Stärke ist \t: " + staerke);
  System.out.println("Ihre Lebenskraft ist : " + leben);
  System.out.println("Ihr Glücksfaktor ist : " + glueck);
 }
}
static sollte man sparsam einsetzen.
in einer andren class:
Code:
private Waffen[] waffenHeld = new Waffen [10];
// waffe anlegen am index 0

waffenheld[0] = new Waffe("Schutzschild",3,2,3);

// auslesen
waffenheld[0].ausgabeWaffenheld();
aber am besten arbeitet man mit ArrayList - statt eine feste Arraygrösse
 

R3LLiK

Grünschnabel
#3
Ich sehe dein array nicht und wenn du es wirklich so machen willst versuch doch die for each schleife ist für array sogar leichter anzuwenden.