Wie weise ich die Werte aus dem Array meinen Objekten (Karten für ein Kartenspiel) zu?

3 Antworten

Dein Code ergibt überhaupt keinen Sinn. Falls der Java-Compiler nicht schon selbst einen Fehler wirft, hast du dir erstmal eine schöne Endlosschleife gebaut, die irgendwann wegen zu wenig Speicher beendet wird. Du rust im Konstruktor deiner Klasse Karte den gleichen Konstruktor nochmal auf.

Außerdem scheinst du die Grundlagen der objektorientierten Programmierung nicht verstanden zu haben. Du hast 1 Karte. Welche Eigenschaften besitzt diese? Meist eine Farbe (Herz, Karo,...) und eine Augenzahl (10, J, D, K, A).

Ein Stapel besteht dann aus mehreren Karten. Dafür kannst du ein Array oder eine Liste verwenden. Der Code sollte dann in etwa so aussehen:

public class Card {
private int _value;
private char _suit;
public Card(char suit, int value) {
_suit = suit;
_value = value;
}
}
public class Deck {
private List<Card> _cards;
public Deck() {
for(int i = 0; i < 4; i++)
for(int j = 1; j <= 14; j++)
_cards.add(new Card((char)i, j));
}
public void shuffle() {
//TODO: implement this
}
}

Für die Farbe würde ich ein Enum verwenden (habe ich in meinen Beispiel nicht gemacht). Und natürlich müsstest du die Werte größer 10 in die entsprechenden Buchstaben umwandeln oder ein anderes System einfallen lassen, damit keine ungültigen Karten hinzugefügt werden können.

Das gilt natürlich nur, wenn wir von einem normalen Kartendeck ausgehen. Wenn ich mir die Frage so durchlese, scheint das allerdings nicht der Fall zu sein...

Dein Schleifenkonstrukt stellt nur ein Karte-Objekt zur Verfüfung... erklär mal genauer was du willst und was dein Code macht... Falls du einfach Karten bestimmte Werte zuweisen willst und diese dann auf nem Stapel speichern machs so:

public class Karte {
private int Wert;
public Karte(int number){
Wert = number;
}
}

public class Start(){

Karte[] stapel = new Karte[60];
int Wert =0;
public static void main(String[] args) {

for (int i=0; i<60; i++){
stapel[i]= new Karte(Wert);
Wert++;
}
}
}

Ich verstehe nicht, was du meinst. Ein Array hat doch schon für jeden Index ein Objekt / Wert...?