インデックス0からスキャンされた整数ArrayListの最初の非ゼロ要素の前にすべてのゼロを削除するコードを作成しようとしました。最初の非ゼロ要素の後のゼロの数。 (投稿質問の形式が理想的ではない場合は申し訳ありません。これが私の最初の時間です。)誰が、なぜ?把握することができます 次のコードでは、意図した出力が[2 0 0 0 0 0]
だったが、出力は受信でき[2 0 0]
Java ArrayList break remove
class Zeroeliminator {
public static void main(String args[]) {
ArrayList <Integer> arr = new ArrayList <Integer>();
arr.add(0); // A
arr.add(2);
for (int i = 2; i < 7; i++)
arr.add(0);
System.out.println(arr.size());
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) != 0) {
break;
}
System.out.println(arr.get(i));
arr.remove(i);
}
System.out.println(arr.size());
ListIterator <Integer> itr = arr.listIterator(0);
while (itr.hasNext()) {
System.out.print(itr.next() + " ");
}
System.out.println();
}
}
要素を削除すると、1 ... –
に沿って移動したすべての要素が、最初のゼロでない要素の前後にすべてのゼロを削除しますか? – Lokesh
あなたの問題は、配列を反復しながら配列を突然変異させようとしているという事実から来ています(下記のEranの説明を参照してください)。ここに親切な助言があります:それをしないでください。代わりに、削除するはずのアイテムを追跡し、配列の繰り返しを終えた後にそれらをすべて削除してください(Andyの回答を参照)。 –