Ich habe den folgenden Code abgeklopft, wo ich alle '0' aus dem Array p4 entfernen möchte. Dieses Array wird in eine Arraylist mengeOfColorPoints eingefügt. Die for-Schleife sollte bis zum Ende der Größe der Liste funktionieren, aber sie wird nicht mehr ausgeführt, nachdem die erste '0' entfernt wurde, wie ich auf der Konsole sehen kann. Was ist das Problem? Könnte mir bitte jemand helfen?Warum wird die for-Schleife nicht fortgesetzt
int[] p4={0,0,4};
ArrayList<Integer> amountOfColorPoints = new ArrayList<>();
. . .
for(int p=0; p<amountOfColorPoints.size(); p++) {
if (amountOfColorPoints.get(p) == 0)
amountOfColorPoints.remove(p);}
Sie brauchen einen 'Iterator' –
Denken Sie darüber nach, was Sie tun, entfernen Sie zuerst die erste 0 Sammlung verlässt als' {0,4} ', dann überprüfen Sie, ob der zweite Wert 0 ist, ist es nicht es ist 4 und Ihre Schleife endet. –
Es gibt ein paar Probleme, aber eine der wichtigeren hier ist, dass Sie sowohl * als auch * die Liste gleichzeitig ändern und das ist ein garantierter Bug. Es sei denn, du liegst rückwärts durch deine Liste, was du nicht bist. Als Übung nehmen Sie Stift und Papier und schreiben Sie für Ihr drei-Elemente-Array in jedem Schritt dieses Codes, was mit Ihrer Position und Ihrem Array passiert. Das dauert vielleicht eine Minute, ist aber eine wertvolle Übung. –