Mit einem Integer-ArrayList in Android
Ich bin benötigen Hilfe bei der Erstellung einer ArrayList und dem hinzufügen von ein paar zahlen in Ihnen. Im wesentlichen habe ich ein Kartenspiel, das zieht die Karte und dann speichert die ID (BCID). Ich möchte hinzufügen, dieser zog-ID zu einer ArrayList, so kann ich vermeiden, ziehen die gleiche Karte zweimal. Ich habe die Einstellungen wie unten, aber ich bekomme immer Duplikate. Ich weiß, die Karten zu ziehen sind richtig, denn es zeigt alles fein - nur wiederholt Karten, leider.
Jede Hilfe, die Sie bereitstellen können, wäre toll! Ich habe mein bestes getan, nur die relevanten Teile. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.
public static Integer bcid1, bcid2, bcid3, bcid4, bcid5, bcdcid;
public static List<Integer> usedCards = new ArrayList<Integer>();
In dem folgenden Beispiel, soll es ja erkennen das Duplikat dann initialisieren Sie die Sequenz, ziehen Sie eine andere Karte.
public static void setIDs()
{
try
{
bcid1 = Integer.parseInt(bc1);
usedCards.add(bcid1);
}
catch(NumberFormatException nfe)
{ }
try
{
bcid2 = Integer.parseInt(bc2);
if (usedCards.contains(bcid2))
{
try
{
blueCard2(ctx);
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
usedCards.add(bcid2);
}
}
catch(NumberFormatException nfe)
{ }
try
{
bcid3 = Integer.parseInt(bc3);
if (usedCards.contains(bcid3))
{
try
{
blueCard3(ctx);
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
usedCards.add(bcid3);
}
}
catch(NumberFormatException nfe)
{ }
try
{
bcid4 = Integer.parseInt(bc4);
if (usedCards.contains(bcid4))
{
try
{
blueCard4(ctx);
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
usedCards.add(bcid4);
}
}
catch(NumberFormatException nfe)
{ }
try
{
bcid5 = Integer.parseInt(bc5);
if (usedCards.contains(bcid5))
{
try
{
blueCard5(ctx);
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
usedCards.add(bcid5);
}
}
catch(NumberFormatException nfe)
{ }
}
- Ich Folge nicht Ihre Logik. Wo
bc1
,bc2
usw. kommen Sie aus?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden HashSet statt der arraylist. Set nicht zulassen doppelte.
Zunächst prüfen, mit Methoden, die für die sich wiederholenden code ist es einfacher zu Debuggen und anpassen, alle an einem Ort nicht herumspringen. Hier, wenn Sie Listen verwenden, Folgen Sie so etwas wie dieses. Entsprechend anpassen
BEARBEITEN: Schauen Sie, das ist nicht aus vielen Gründen arbeiten, weil die Liste.enthält gibt nur dann true, wenn ein Objekt innerhalb einer Liste, in der Sie Ihre Vorstellung von der Lösung haben Sie zwei verschiedene Objekte mit dem gleichen Inhalt. Mischen Sie zwei dieser Dinge. Es ist nicht das gleiche. So dass Ihre Funktion nur false zurück.
Mein code war mehr eine Anregung für Sie, wie um eine Methode zu erstellen, und hoffte, dass Sie gehen, um etwas mehr in diesem. Dies sind grundlegende Programmierkenntnisse. Ich will nicht unhöflich sein, aber das ist völlig aus der Zweck dieses Forums.
Hoffe, das hilft und genießen Sie Ihre Arbeit