0
私のクラスのプロジェクトを作成していて、目的はスタックを使用してキューを作成することです。私はクラスのための一般的なフレームワークを持っていると思う:プロジェクトのpop()メソッドでエラーが発生しました
import java.util.LinkedList;
import java.util.Stack;
public class SQueue {
private Stack<Integer> queue;
public SQueue(Stack<Integer> inputQueue) {
queue = inputQueue;
}
public void push(int x) {
Stack<Integer> tempStack = new Stack<Integer>();
Stack<Integer> backwardsStack = new Stack<Integer>();
tempStack.push(x);
while(!queue.isEmpty()) {
backwardsStack.push(queue.pop());
}
while(!backwardsStack.isEmpty()) {
tempStack.push(backwardsStack.pop());
}
queue = tempStack;
}
public int pop() {
Stack<Integer> tempStack = new Stack<Integer>();
while(!queue.isEmpty()) {
tempStack.push(queue.pop());
}
int temp = tempStack.peek();
tempStack.pop();
return temp;
}
public int peek() {
Stack<Integer> tempStack = new Stack<Integer>();
while(!queue.isEmpty()) {
tempStack.push(queue.pop());
}
int temp = tempStack.peek();
return temp;
}
public boolean isEmpty() {
return queue.isEmpty();
}
}
もテストのための次のクラス使用してイム:
Exception in thread "main" java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at SQueue.pop(SQueue.java:27)
at SQueueTest.case1(SQueueTest.java:19)
at SQueueTest.main(SQueueTest.java:10)
:私はこのエラーを受信したプログラムを実行した後
import java.util.Stack;
public class SQueueTest {
public static void main(String[] args) {
Stack<Integer> s = new Stack<Integer>();
SQueue test1 = new SQueue(s);
SQueue test2 = new SQueue(s);
SQueue test3 = new SQueue(s);
case1(test1);
case2(test2);
case3(test3);
}
public static void case1(SQueue test) {
for(int i =1; i <6; i++) {
test.push(i);
}
for(int i =0; i <3; i++) {
test.pop();
}
System.out.println(test.peek());
}
public static void case2(SQueue test) {
test.push(2);
test.push(4);
test.push(8);
for(int i =0; i <2; i++) {
test.pop();
}
System.out.println(test.isEmpty());
}
public static void case3(SQueue test) {
for(int i = 1; i<4; i++) {
test.push(i*3);
}
test.pop();
System.out.println(test.peek());
System.out.println(test.isEmpty());
}
}
をポップ()メソッドのtemp変数をバグテストしていたときに、正しいint、5を格納していたが、その桁を削除したので、このエラーを解決する方法をわからない。