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.
Könnt ihr mir bitte helfen? Ich blick da nicht mehr soganz durch...
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...