java.util.Stack

Status
Nicht offen für weitere Antworten.

vensch

Mitglied
Hallo Leute, ich hab ein Problem mit der folgenden Aufgabe:

Wandeln Sie das Attribut cards der Klasse CardStack vom Typ Card[] in den Typ
java.util.Stack<Card> um. Passen Sie alle Methoden der Klasse CardStack an.
Anschließend fügen Sie noch die folgenden Eigenschaften hinzu: Bei der Methode
pop soll zuerst geprüft werden, ob das Attribut cards leer ist und in diesem Fall null
zurückgegeben werden. Bei der Methode top soll diese Abfrage nicht vorgenommen
werden. Der peek Aufruf in der top Methode wirft allerdings eine Exception, wenn der
Stack leer ist. Wenn die Exception in der Methode top geworfen wird, soll null
zurückgegeben werden.


Java:
package Cards;

/**
 * Diese Klassen diehnt als Kartenstapel. Sie kann Karten an diesen Stapel
 * anhängen und eine Karte vom Anfang wegnehmen. Diese Klasse arbeitet wie ein
 * Stack, allerdings nach dem FIFO (First In First Out) Prinzip.
 * 
 * 
 */

public class CardStack {

	private Card[] cards;
	/**
	 * Der Konstruktor
	 */
	public CardStack() {
		cards = new Card[32];
	}
	/**
	 * Diese Methode fügt eine Karte am Ende der Karten des Arrays hinzu.
	 * Hinweis: Das Array besitzt am Anfang nur null Objekte.
	 * @param newCard Die anzuhängende Karte
	 */
	public void push(Card newCard) {
		int index = 0;
		while (index < cards.length && cards[index] != null) {
			index++;
		}
		if (index < cards.length)
			cards[index] = newCard;
	}
	/**
	 * Diese Methode gibt die Karte aus die zuletzt gesetzt wurde.
	 * Wenn diser Stapel 3 karten hat, wird die dritte Karte ausgegeben, OHNE sie vom Stapel zu löschen.
	 * Wenn keine Karte auf dem Stapel liegt, wird null zurückgegeben.
	 * @return
	 */
	public Card top() {
		int index = 0;
		while (index < cards.length && cards[index] != null) {
			index++;
		}
		if (index == 0)
			return null;
		index--;
		if (index < cards.length)
			return cards[index];
		return null;

	}
	/**
	 * Diese Methode liefert das erste Objekt aus dem Array. Wenn keine Karte auf 
	 * dem Stapel liegt wird null zurückgegeben.
	 * Anschließend wird diese Karte vom Stapel entfernt.
	 * Hinweis: Wenn eine Karte am Anfang eines Arrays gelöscht wird, kann 
	 * es evtl. sinnvoll sein, die übrigen Karten aufrutschen zu lassen,
	 * d.h. cards[n]=cards[n+1]
	 * @return
	 */
	public Card pop() {
		if (cards[0] == null)
			return null;
		Card out = cards[0];
		Card[] cardClones = new Card[cards.length];
		for (int i = 0; i < cards.length - 1; i++) {
			cardClones[i] = cards[i + 1];
		}
		
		cards = cardClones;
		
		return out;
	}
	
	/**
	 * Diese Methode zählt die Karten, welche sich zu diesem Zeitpunkt in dem Array
	 * befinden und gibt die Zahl aus.
	 * @return
	 */
	public int count(){
		for(int i=0;i<cards.length;i++){
			if(cards[i]==null)
				return i;
		}
		return cards.length;
	}

}

Könnt ihr mir bitte helfen? Ich blick da nicht mehr soganz durch... :(
 
S

SlaterB

Gast
inwiefern blickst du denn nicht durch?
du sollst als erstes das Array entfernen und dafür was anderes einbauen,
das ist doch ein recht atomarer Schritt den man kaum weiter erklären kann,
woran scheiterst du?
 

vensch

Mitglied
Ich verstehe einfach nicht, wie das von der Form nachher aussehen soll. Vielleicht hilft ein Beispiel?
 
S

SlaterB

Gast
gern

Java:
public class Test
{
    public static void main(String[] args)
    {

    }

    public class CardStackOld
    {

        private Card[] cards = new Card[20];

        public Card getLast()
        {
            return cards[19];
        }
    }

    public class CardStackNew
    {

        private Stack<Card> cards = new Stack<Card>();

        public Card getLast()
        {
            return cards.pop();
        }
    }

    class Card
    {

    }


}
man beachte den Unterschied zwischen Old und New

dieses Beispiel ist natürlich nicht dein vollständiges Programm ;)
 

vensch

Mitglied
Danke erstmal dafür :).
Allerdings weiß ich nun immer noch nicht genau, was ich alles umschreiben muss... :oops: hast du vielleicht eine gute Seite für mich, wo es erklärt wird? Ich hab schon gesucht, bin aber nicht fündig geworden. :noe:
 
S

SlaterB

Gast
sowas wird kein Buch erklären, hier ist normales Denken erfordert

bei einem Array lautet der Zugriff array[3],
wenn du das Array in eine List umwandelst, lautet der Zugriff list.get(3)

das schreibt kein Buch der Welt auf, das ist so elementar
 

vensch

Mitglied
Ich hab mich maldranversucht. aber bin mir sehr unsicher. Wahrscheinlich ein Haufen Fehler drin... :oops:

Java:
package Cards;
import java.util.Stack;


/**
 * Diese Klasse diehnt als Kartenstapel. Sie kann Karten an diesen Stapel
 * anhängen und eine Karte vom Anfang wegnehmen. Diese Klasse arbeitet wie ein
 * Stack, allerdings nach dem FIFO (First In First Out) Prinzip.
 * 
 */

public class CardStack {

	private Stack<Card> cards = new Stack<Card>();
	
	/**
	 * Diese Methode fügt eine Karte am Ende der Karten des Arrays hinzu.
	 * Hinweis: Das Array besitzt am Anfang nur null Objekte.
	 * @param newCard Die anzuhängende Karte
	 */
	public void push(Card newCard) {
	cards.push(newCard);
	}
	/**
	 * Diese Methode gibt die Karte aus die zuletzt gesetzt wurde.
	 * Wenn diser Stapel 3 karten hat, wird die dritte Karte ausgegeben, OHNE sie vom Stapel zu löschen.
	 * Wenn keine Karte auf dem Stapel liegt, wird null zurückgegeben.
	 */
	public Card peek() {
		int size = cards.size();
		if ( size == 0 );
		    throw new EmptyStackException();
		    return null;
	}
	
	/**
	 * Diese Methode liefert das erste Objekt aus dem Array. Wenn keine Karte auf 
	 * dem Stapel liegt wird null zurückgegeben.
	 * Anschließend wird diese Karte vom Stapel entfernt.
	 * @return
	 */
	public Card pop() {
		int size = cards.size();
		if(size == 0);
		return null;
	}
	
	/**
	 * Diese Methode zählt die Karten, welche sich zu diesem Zeitpunkt in dem Array
	 * befinden und gibt die Zahl aus.
	 * @return
	 */
	public int count(){
		return cards.size();
	}

}
 
S

SlaterB

Gast
na auf jeden Fall hast du das Grundprinzip nun wunderbar verstanden,

Fehler kannst du mit Testen finden,
füge drei Elemente ein, frage das höchste ab, entferne 2, zwischendurch ständig size() abfragen usw.
 

vensch

Mitglied
Okay, ich hab noch eine Frage...
Die Methode pop liefert ja nicht mehr die erste Karte der Liste, sondern die letzte
Karte. Wie passe ich jetzt die folgende if-Anweisung an?

Java:
public void moveNext() {
		if (deck.top() == null) {
			Card[] stack2 = new Card[field.count() - 1];
			for (int i = 0; i < stack2.length; i++) {
				stack2[i] = field.pop();
			}
			shuffle(stack2);
			for (int i = 0; i < stack2.length; i++) {
				deck.push(stack2[i]);
			}

		}

Bei der Methode moveNext soll die erste if-Anweisung überprüfen, ob das
Attribut deck leer ist und es ggf. mit gemischten Karten aus dem Attribut field
auffüllen, wobei die zuletzt gesetzte Karte im Attribut field bleiben soll.
 
S

SlaterB

Gast
hmm, pop() ist hier ja sehr komisch definiert,
normalerweise entfernt pop() das letzte/ höchste Element im Stack, so gibt es ja auch eine fertige pop()-Methode in java.util.Stack

auf tiefere Elemente zuzugreifen wird normalerweise nicht unterstützt,
da Stack aber ein Vector, also eine List ist, kannst du Methoden wie get(0), remove(0) usw. verwenden

nur für moveNext() betrachtet, wäre es übrigens als Endergebnis egal, ob man field von oben oder unten auseinandernimmt,
stack2 wird danach eh durcheinandergemischt (shuffle),

von oben wäre aus Arbeits-Sicht günstiger, dann muss man immer nur das oberste Element abnehmen,
wenn man dagegen das unterste entfernt, müssen jeweils alle verbleibenden in ihrer Position aktualisiert werden..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
BATMAN_2008 Jackson adding additional fields to JSON throws java.util.concurrent.CompletionException: Java Basics - Anfänger-Themen 2
R java.util.Set, CASE_INSENSITIVE_ORDER Java Basics - Anfänger-Themen 6
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
C java.util Timer läuft zu langsam? Java Basics - Anfänger-Themen 1
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
A Java.util.Arrays Java Basics - Anfänger-Themen 15
F java.util.ArrayList Java Basics - Anfänger-Themen 3
B java.util.Date noch zeitgemäß? Java Basics - Anfänger-Themen 6
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
M java.util.scanner Fehler Java Basics - Anfänger-Themen 5
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
N java.util.Random - Zwei Zahlen mit festgesetzter Wahrscheinlichkeit? Java Basics - Anfänger-Themen 15
A Vererbungshierachie und java.util.Date Java Basics - Anfänger-Themen 31
W Erste Schritte import java.util.scanner funktioniert nicht Java Basics - Anfänger-Themen 2
I google java-diff-util - Patch abspeichern Java Basics - Anfänger-Themen 1
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
H Repräsentation von DateTime (Joda) in Java Util Date überführen Java Basics - Anfänger-Themen 3
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
D java.util.NoSuchElementException: No line found Java Basics - Anfänger-Themen 11
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
S Compiler-Fehler Scanner java.util NoSuchElementExeption Java Basics - Anfänger-Themen 8
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
B ThreadPoolExecutor - import java.util.concurrent Java Basics - Anfänger-Themen 2
R java.util.Random Java Basics - Anfänger-Themen 8
S Methoden Sortieren: java.util.Arrays.useLegacyMergeSort Java Basics - Anfänger-Themen 4
F java.util.scanner wird übersprungen Java Basics - Anfänger-Themen 9
O java.util.Scanner hängt sich auf Java Basics - Anfänger-Themen 5
E Klassen java.util.ArrayList<E> als Generics Java Basics - Anfänger-Themen 16
D java.util.ResourceBundle - exception Java Basics - Anfänger-Themen 4
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
M java.util.ArrayList to java.sql.Array Java Basics - Anfänger-Themen 4
D java.util.Currency Java Basics - Anfänger-Themen 2
T java.util.Date Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
N java.util.Random Java Basics - Anfänger-Themen 6
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
Luk10 Java.util.Scanner Java Basics - Anfänger-Themen 11
H ArrayList über java.util.Scanner füllen Java Basics - Anfänger-Themen 5
P ArrayList<E> in package java.util Java Basics - Anfänger-Themen 4
N java.util.Arrays.sort Warum sind Leerzeichen vor alphabetischen Zeichen sortiert? Java Basics - Anfänger-Themen 12
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
T import java.util.scanner cannot be resolved Java Basics - Anfänger-Themen 19
D java.util.Currency.getInstance exception mit brit. Pfund Java Basics - Anfänger-Themen 4
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
J Java.Util.Properties wrapper class (Review Request) Java Basics - Anfänger-Themen 2
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
G DateFormat - Datumsformat java.util.Locale interpretieren Java Basics - Anfänger-Themen 2
? java.util.Properties Wert von key mehrfach vorhanden Java Basics - Anfänger-Themen 13
E java.util.ConcurrentModificationException Problem Java Basics - Anfänger-Themen 5
F java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
Q java.util.loggging neue datei erstellen Java Basics - Anfänger-Themen 3
L Exception in thread "main" java.util.NoSuchElement Java Basics - Anfänger-Themen 4
hedges Würfelwurf mit java.util.Random ohne 0 Java Basics - Anfänger-Themen 6
W Java.util.Map in Bean wandeln Java Basics - Anfänger-Themen 2
M java.util.Timer und geplante Abarbeitung Java Basics - Anfänger-Themen 2
U java.util.Date to java.sql.Date Java Basics - Anfänger-Themen 2
K Wer kann mir java.util.Hastable erklären. Java Basics - Anfänger-Themen 3
K Probleme mit java.util.hashtable Java Basics - Anfänger-Themen 10
K Zipfile erstellen mit java.util.zip.* Java Basics - Anfänger-Themen 2
J Eclipse und printf und import util.java.scanner; Java Basics - Anfänger-Themen 4
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
K Prob mit java.util.regex.matches-String wird nicht erkannt? Java Basics - Anfänger-Themen 9
T Möchte Charwert 23C° mit java.util.Scanner einlesen macht Pr Java Basics - Anfänger-Themen 2
K java.util.Calendar und Objekt Java Basics - Anfänger-Themen 7
M Seltsames java.util.Date Problem Java Basics - Anfänger-Themen 6
M java.util.Scanner kann nicht aufgelöst werden - warum nicht? Java Basics - Anfänger-Themen 4
RaoulDuke java.util.Date parsen Java Basics - Anfänger-Themen 5
M Source Code von java.util.SubList Java Basics - Anfänger-Themen 2
ff java.util.date Java Basics - Anfänger-Themen 2
O reguläre Ausdrücke bei java.util.regex.Pattern Java Basics - Anfänger-Themen 4
K Keine weitere (java.util.)Scanner Eingabemöglichkeit? Java Basics - Anfänger-Themen 5
A wie implementiere ich java.util.Scanner? Java Basics - Anfänger-Themen 12
D Mit java.util.Arrays.sort die negativen Zahlen hinten Java Basics - Anfänger-Themen 4
C java.util.Timer und wait() oder so was Java Basics - Anfänger-Themen 3
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
S java.awt.List vs. java.util.List Java Basics - Anfänger-Themen 2
D dumme Frage! (was heist 'import java.util.*;' ?) Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62

Ähnliche Java Themen

Neue Themen


Oben