Java:根据整数是奇数还是偶数将整数放在双端队列中的第一个或最后一个

标签 java if-statement for-loop deque

我必须编写一个程序,在双端队列中添加整数,以便在双端队列中最后添加奇数,首先添加偶数。 我不知道在哪里添加用于添加数字的 if 语句以及如何使我的代码工作。 抱歉,如果我的代码似乎有误,因为这是我在 deque 上的第一个程序。

package lesson1;
import java.util.*;


     public class MyClass1{

     public static void main(String[] args) {

     Deque<Integer> d= new LinkedList<Integer>();

     d.add(10);
     d.add(3);
     d.add(5);
     d.add(6);
     d.add(15);

     for(int i=0; i<d.size();i++){

         Integer head= d.poll();

         if(head%2==1){
             d.addLast(head);

         }

         else{
             d.addFirst(head);
         }

     }

     System.out.println(d);


  }

}

最佳答案

@cottonman 是正确的,我确实会像这样使用单独的输入列表:

ArrayList<Integer> input = new ArrayList<>();
Deque<Integer> d = new LinkedList<>();

input.add(10);
input.add(3);
input.add(5);
input.add(6);
input.add(15);

for (Integer i : input) {
    if (i % 2 == 1) {
        d.addLast(i);
    } else {
        d.addFirst(i);
    }
}

System.out.println(d);

这将迭代 input ArrayList 并产生 [6, 10, 3, 5, 15],这就是您想要的(奇数在后,偶数在前)。

编辑:要回答您对@cottonman 的问题,确实可以在添加时进行检查。为此,您可以匿名扩展 LinkedList 并覆盖 add() 方法:

Deque<Integer> d = new LinkedList<Integer>() {
    @Override
    public boolean add(Integer integer) {
        if (integer % 2 == 1) {
            super.addLast(integer);
        } else {
            super.addFirst(integer);
        }
        return true;
    }
};

d.add(10);
d.add(3);
d.add(5);
d.add(6);
d.add(15);

System.out.println(d);

这还将打印所需的输出,并且添加到 Deque 的每个数字现在都将以所需的方式添加。

关于Java:根据整数是奇数还是偶数将整数放在双端队列中的第一个或最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127313/

相关文章:

java - 如何比较数组的相反索引值并根据嵌套 for 循环的条件进行删除?

java - 如何将java小程序绑定(bind)到socket?

java - 写入文件。 (二叉搜索树)

javascript - 如何在 JavaScript 中将单独的元素添加到列表中?

php - 如何在 php 中区分一个值是零还是 NULL?

php - 如何退出if语句并继续else

python - 如何为/: 'str' and 'int' in for loops处理不受支持的操作数类型

c - 二维数组的无限 for 循环

java - 如何使用 Java ProcessBuilder 从 CMD 提示符执行 SQL 文件

java - 将生成的 XSLT 数据保存到 XML 文件