我的java方法代码有什么问题堆叠

我的java方法代码有什么问题堆叠,java,methods,iterator,stack,peek,Java,Methods,Iterator,Stack,Peek,我花了几个小时创建了一个方法,该方法将从堆栈s1中获取null元素,并将它们放入s2中。然后类应该打印堆栈。方法如下 import net.datastructures.ArrayStack; import net.datastructures.Stack; import javax.imageio.IIOException; public class Stacks { public static <E> void compress(Stack<E> s1, S

我花了几个小时创建了一个方法,该方法将从堆栈s1中获取null元素,并将它们放入s2中。然后类应该打印堆栈。方法如下

import net.datastructures.ArrayStack;
import net.datastructures.Stack;
import javax.imageio.IIOException;

public class Stacks {
    public static <E> void compress(Stack<E> s1, Stack<E> s2) {
        int counter = 0;
        while (!s1.isEmpty()) {
            s1.peek();
            if (s1.peek() == null) {
                s1.pop();        
            } else if (s1.peek() == !null) {
                s1.pop();
                s2.push();
                counter++;
            }
            for (counter=10;counter>s1.size(); counter--){
            }
            s2.pop();
            s1.push();
        }    
    }

    public static void main(String[] args) {
        // test method compress
        Stack<Integer> S1 = new ArrayStack<Integer>(10);
        S1.push(2);
        S1.push(null);
        S1.push(null);
        S1.push(4);
        S1.push(6);
        S1.push(null);
        Stack<Integer> s2 = new ArrayStack<Integer>(10);
        s2.push(7);
        s2.push(9);
        System.out.println("stack S1: " + S1);
        // prints: "stack S: [2, null, null, 4, 6, null]"
        System.out.println("stack s2: " + s2);
        // prints: "stack X: [7, 9]"
        compress(S1, s2);
        System.out.println("stack S1: " + S1);
        // should print: "stack S: [2, 4, 6]"
        System.out.println("stack s2: " + s2);
        // should print: "stack X: [7, 9]"
    }
}
导入net.datastructures.ArrayStack;
导入net.datastructures.Stack;
导入javax.imageio.IIOException;
公共类堆栈{
公共静态无效压缩(堆栈s1、堆栈s2){
int计数器=0;
而(!s1.isEmpty()){
s1.peek();
if(s1.peek()==null){
s1.pop();
}else if(s1.peek()===!null){
s1.pop();
s2.push();
计数器++;
}
对于(计数器=10;计数器>s1.size();计数器--){
}
s2.pop();
s1.push();
}    
}
公共静态void main(字符串[]args){
//压缩试验方法
堆栈S1=新阵列堆栈(10);
S1.推动(2);
S1.推送(空);
S1.推送(空);
S1.推动(4);
S1.推动(6);
S1.推送(空);
堆栈s2=新阵列堆栈(10);
s2.推(7);
s2.推(9);
System.out.println(“堆栈S1:+S1”);
//打印:“堆栈S:[2,空,空,4,6,空]”
System.out.println(“堆栈s2:+s2”);
//打印:“堆栈X:[7,9]”
压缩(S1,s2);
System.out.println(“堆栈S1:+S1”);
//应打印:“堆栈S:[2,4,6]”
System.out.println(“堆栈s2:+s2”);
//应打印:“堆栈X:[7,9]”
}
}
Eclipse给了我peek()和push()方法的错误;它允许使用pop()方法。据我所知,这些方法是遗传的?非常感谢您的帮助

else if (s1.peek() == !null) 
这是不对的。使用以下命令:

else if (s1.peek() != null) 
这是不对的。使用以下命令:

else if (s1.peek() != null) 
这:

应该是:

    if (s1.top() == null) {
        s1.pop();

    } else {
        s2.push(s1.pop());

        counter++;
    }
您无需再次检查
s1。peek()
不为空。另外,
!null
不是正确的语法

我将我的答案编辑为使用
top()
而不是
peek()
,并将
pop()
s1
转换为
s2
这是:

应该是:

    if (s1.top() == null) {
        s1.pop();

    } else {
        s2.push(s1.pop());

        counter++;
    }
您无需再次检查
s1。peek()
不为空。另外,
!null
不是正确的语法


我将我的答案编辑为使用
top()
而不是
peek()
,并将
pop()
s1
转换为
s2
除了比较中的错误外,还有一些语法错误:

push()?即使它是
null
它仍然需要是
s1.push(null)
。如果这是你正在做的事情,你需要把它的结果分配给某个东西——现在它正在丢失给以太


您正在使用的对象(net.datastructures.Stack)没有
peek()
方法;相反,它有执行相同功能的
top()

除了比较错误之外,还有一些语法错误:

push()?即使它是
null
它仍然需要是
s1.push(null)
。如果这是你正在做的事情,你需要把它的结果分配给某个东西——现在它正在丢失给以太


您正在使用的对象(net.datastructures.Stack)没有
peek()
方法;相反,它有执行相同功能的
top()

我试图将从s1弹出的任何内容推到s2上,如果这有意义的话?是的。因此,您需要将
s1.pop()
的结果分配给一个变量,然后将其传递给
s2.push()
。或者更短的路径,跳过中间变量:
s2.push(s1.pop())
Ok,谢谢。现在就到peek()了。日食抛出了一条红线?红线在哪里?您是否做了其他答案建议的更改?看起来net.datastructures.Stack有一个
top()
而不是
peek()
方法。你可以使用
top()
,或者,因为你在每次偷看之后都会立即弹出,所以你可以直接弹出一个变量并测试它是否为空。如果有意义的话,我尝试将从s1弹出的任何内容推到s2?是的。因此,您需要将
s1.pop()
的结果分配给一个变量,然后将其传递给
s2.push()
。或者更短的路径,跳过中间变量:
s2.push(s1.pop())
Ok,谢谢。现在就到peek()了。日食抛出了一条红线?红线在哪里?您是否做了其他答案建议的更改?看起来net.datastructures.Stack有一个
top()
而不是
peek()
方法。您可以使用
top()
,或者,由于每次偷看后都会立即弹出,您可以直接弹出一个变量并测试该变量是否为空。有哪些错误消息,请添加到您的问题中?有哪些错误消息,请添加到您的问题中?