タスクは、数値を読み取って両端キューに格納するプログラムを作成することです。
サンプル入力: 4 1 2 3 4 サンプル出力: 4 2 1 3
偶数は最初の要素として、奇数は最後の要素として追加する必要があります。その後、プログラムは最初から最後まですべての要素を出力する必要があります。
これが私のコードです:
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Deque<Integer> deque = new ArrayDeque<>(sc.nextInt());
while (sc.hasNext()) {
int nextInt = sc.nextInt();
if (nextInt % 2 == 0) {
deque.addFirst(nextInt);
} else deque.addLast(nextInt);
}
for (int elt : deque) {
System.out.println(elt);
}
}
}
サンプル出力: 4 2 1 3
それは正常に動作します、それは正しいです。しかし!
書き直しましょう
Deque<Integer> deque = new ArrayDeque<>(sc.nextInt())
なので
Deque<Integer> deque = new ArrayDeque<>(4)
この場合、出力例は次のとおりです。 4 2 4 1 3 。つまり、それは正しくありません。
同じ容量を異なる方法で入力すると、なぜこのように異なる結果が得られるのでしょうか?