有一个任务
编写一个程序,从 System.in 中读取一个以空格分隔的整数序列,然后从中删除所有偶数位置的整数,然后将结果序列以相反的顺序输出到 System.out。
所有数字都适合 int。序列中数字的位置从零开始编号。
所有进口都为您申报。输入示例:1 2 3 4 5 6 7 8 9 10 输出示例:10 8 6 4 2
要求:
- 必须有 public static void main(String[] args) 方法
- 程序应该从控制台读取数据
- 程序应该将文本输出到控制台
我写了一个解决方案
public static void main(String[] args) {
//ByteArrayInputStream bais = new ByteArrayInputStream("1 2 3 4 5 6 7 8 9 10".getBytes());
//System.setIn(bais); - для тестов в идее
ArrayDeque<Integer> numbers = new ArrayDeque<>();
Scanner reader = new Scanner(System.in);
String[] strArr = reader.nextLine().split(" ");
int[] numArr = new int[strArr.length];
for (int i = 0; i < strArr.length; i++) {
numArr[i] = Integer.parseInt(strArr[i]);
numbers.addFirst(numArr[i]);
}
for (int i = 0, max = numbers.size(); i < max; i++) {
if ((i % 2) == 0) {
numbers.pop();
} else {
System.out.print(numbers.pop() + " ");
}
}
}
同时,我在验证平台上报错——“你的答案没有通过测试!2号测试失败,方法执行不正确。” (最初测试 #1 失败,但我更改了代码)
问题 1 - 通常如何使用 ArrayDeque 和泛型来完成这项任务?
问题 2 - 这个解决方案可以纠正吗?
我同意,我理解这个理论很糟糕,我不知道在这种情况下该怎么做)
问题是我将双端队列用作普通数组。但这真的是一个问题,还是有必要?
如果我使用不正确,最好的方法是什么?
您在括号和逗号中输出数组,
[10, 8, 6, 4, 2]测试人员只需要用空格分隔的数字。所以循环往复numbers,一次输出一个元素。