Ich habe Probleme mit einer Klasse, die ich geschrieben habe, die eine ArrayList
enthält. Code:Kann definierte Methode auf Arraylist nicht aufrufen
import java.util.ArrayList;
public class AscendingPile {
public ArrayList<Integer> pile = new ArrayList<Integer>() {{
add(1);
}};
public void lay(int card) throws IllegalArgumentException{
int lastCard = pile.get(pile.size() - 1);
if(card > lastCard || card == lastCard - 10){
pile.add(card);
}
else {
throw new IllegalArgumentException("....");
}
}
// returns last card on the deck
public int getCard() {
return pile.get(pile.size() - 1);
}
}
Problem ist die lay
Methode: Statt eine neue lokale Variable definiert, ich möchte, wenn Aussage etwas wie folgt aussehen:
if(card > pile.getCard() || card == pile.getCard() - 10)
aber IntelliJ sagt kann nicht auflösen symbol getCard()
Wie kann ich meinen Code ändern, um das gewünschte Ergebnis zu erhalten?
Das liegt daran, dass 'getCard()' keine Methode ist, die für 'ArrayList' definiert ist. – azurefrog
'getCard' ist keine Methode der Klasse' ArrayList', daher kann man 'getCard' nicht auf' pile' aufrufen, was Sie tun: 'pile.getCard()'. Rufen Sie einfach 'getCard()', nicht 'pile.getCard()'. – Jesper
Überprüfen Sie auch dies, könnte für die Verbesserung Ihres Codes interessant sein: http://stackoverflow.com/a/14072408/7709364 –