目前,我对Java和学习Dequeue相当陌生。
我有一个相当简单的任务,但我做错了一些事情,我希望在这个特定的任务上有一些帮助,还有一些关于如何处理这些任务的建议。
我得到了两个Deques:
charDeque = a, e, i , o , u, b
intDeque = 3, 6, 9。
我需要设置一个整数输出,从上到下的字符应该如下所示: 3,a,6,e,9,i,o,u,b//自上而下。
这是我的密码。我的方法是循环两个Deques,并使用pollLast();方法获取尾部,并将其推送到一个空的中。然而,我的输出接近但不完全在那里: o,9,u,6,b,3。我假设我对while循环有问题,有人能帮忙吗?
package QueueInterfaceExercise1;
import java.util.ArrayDeque;
import java.util.Deque;
public class Tester {
public static Deque<Object> mergeQueue(Deque<Integer> intQueue, Deque<Character> charQueue) {
//Implement your logic here and change the return statement accordingly
// System.out.println(intQueue);
System.out.println(charQueue);
// [3, 6, 9]
// [a, e, i, o, u, b]
Deque<Object> mergedStack = new ArrayDeque<Object>();
// Object number = intQueue.getLast();
// System.out.println(number);
// mergedStack.addLast(number);
while( !intQueue.isEmpty() && !charQueue.isEmpty() ) {
int number = intQueue.pollLast();
char letter = charQueue.pollLast();
mergedStack.push(number);
mergedStack.push(letter);
}
return mergedStack;
}
public static void main(String[] args) {
Deque<Integer> integerQueue = new ArrayDeque<Integer>();
integerQueue.add(3);
integerQueue.add(6);
integerQueue.add(9);
Deque<Character> characterQueue = new ArrayDeque<Character>();
characterQueue.add('a');
characterQueue.add('e');
characterQueue.add('i');
characterQueue.add('o');
characterQueue.add('u');
characterQueue.add('b');
Deque<Object> mergedQueue = mergeQueue(integerQueue, characterQueue);
System.out.println("The elements in the merged queue are:");
for(Object element: mergedQueue)
System.out.println(element);
}
}发布于 2022-06-05 17:22:39
你的算法很接近。基本上,您希望从任一deque中保持消费元素,而任何deque都有元素。所以您需要一个or (而不是and)。就像,
public static Deque<Object> mergeQueue(Deque<Integer> intQueue,
Deque<Character> charQueue) {
Deque<Object> mergedStack = new ArrayDeque<>();
while (!intQueue.isEmpty() || !charQueue.isEmpty()) {
if (!intQueue.isEmpty()) {
mergedStack.push(intQueue.pop());
}
if (!charQueue.isEmpty()) {
mergedStack.push(charQueue.pop());
}
}
return mergedStack;
}https://stackoverflow.com/questions/72509476
复制相似问题