Wie kann ich aus einer ArrayList in einer anderen Klasse erben?
Ich habe mit der Hilfe einer Freundin eine Klasse "Hauptstapel" erstellt und diese enthält die 60 Karten (gemischt) in einer ArrayList. Nun wollen wir eine zweite Klasse erstellen ("HandKarten") die vom Hauptstapel erben soll. In dieser Klasse soll auch angegeben werde, dass Karten vom Hauptstapel abgezogen werden, also fünf Karten für jeden Spieler. Ich hatte mir das so vorgestellt, dass man fünf Karten abzieht (.remove) und sie dann der ArrayList mit den Handkarten hinzufügt (.add), aber ich weiß nicht, wie ich das anstellen soll. Leider bin ich auch nur ne Anfängerin, was es mir noch schwieriger macht damit klar zukommen.
So sieht die Klasse Hauptstapel aus:
public class Hauptstapel {
static ArrayList Karten = new ArrayList();
public static void main(String[] args) {
Random rand1 = new Random(); //Neues Random Objekt for (int a= 0; a < 12; a++) { for(int i=1;i<=5;i++) {
Karten.add(i); //Fügt Zufällige Zahl ein }
} Collections.shuffle(Karten);
2 Antworten
Also zunächst: Du nutzt das Random-Objekt nicht, entweder mach es oder lösch den Code. Objektnamen werden immer klein geschrieben.
Zu deiner Frage: Du kannst mit den Methoden .get(index i), .remove(index i) und .add(int Karte) das gewünschte realisieren.
Kannst z.B. folgendes nutzen:
handkarten.add(karten.get(i)); karten.remove(i).
Dabei sollte i der Index des ersten Elements (0) oder des letzten Elements (karten.size()-1) sein, je nachdem was du als "oben" definierst.
Das vererben machst du indem du die neue Klasse folgendesmaßen konstruierst:
public class Handkarten extends Hauptstapel
1. Es gibt hier eine Code-Funktion
2. Variablennamen schreibt man per Konvention klein
3. Generics ohne Typenparameter sieht man nicht gerne
4. Die "Karten" sind einfach nur Zahlen
5. Wozu das Random-Objekt?
Zu deiner Frage: Du machst eine Schleife von 0 bis 5, ziehst bei der einen Liste die Einträge ab und fügst sie bei der anderen hinzu.
Es gibt auch immernoch eine Code-Funktion. Oder Pastebin.
Und meine vorherige Antwort gilt auch immernoch.
Sorry, habe anscheinend nicht alles kopiert
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.Collection;
public class Hauptstapel {
static ArrayList<Integer> Karten = new ArrayList<Integer>();
public static void main(String[] args) {
Random rand1 = new Random(); //Neues Random Objekt
for (int a= 0; a < 12; a++)
{
for(int i=1;i<=5;i++) {
Karten.add(i); //Fügt Zufällige Zahl ein }
}
Collections.shuffle(Karten);
System.out.println(Karten);
}
}