Java 如何检查堆栈的前两个元素是否存在?

Java 如何检查堆栈的前两个元素是否存在?,java,stack,Java,Stack,我正在使用Java堆栈,我想知道堆栈顶部是否至少有2个项目。我仅限于堆栈中的方法,不能使用.add()之类的东西 我当前的问题是当元素的值为0时。我必须同时处理正整数、负整数和0整数。以下是我对所讨论方法的代码: publicstaticboolean有两个元素(堆栈){ int temp1=0; int temp2=0; 布尔值=假; 如果(!stack.isEmpty()){ //检查作业是否成功 已发生=((temp1=(java.lang.Integer)stack.pop())!=0

我正在使用Java堆栈,我想知道堆栈顶部是否至少有2个项目。我仅限于堆栈中的方法,不能使用.add()之类的东西

我当前的问题是当元素的值为0时。我必须同时处理正整数、负整数和0整数。以下是我对所讨论方法的代码:

publicstaticboolean有两个元素(堆栈){
int temp1=0;
int temp2=0;
布尔值=假;
如果(!stack.isEmpty()){
//检查作业是否成功
已发生=((temp1=(java.lang.Integer)stack.pop())!=0)
&&((temp2=(java.lang.Integer)stack.pop())!=0);
如果(发生){//如果两个赋值都发生了
stack.push((E)新整数(temp2));//按顺序反序弹出b/c
stack.push((E)新整数(temp1));
返回true;
}
}
返回false;
}
更具体地说,我需要知道任务是否成功。

如何:

public static <E> boolean hasTwoElements(Stack<E> stack) {
    return (stack.size() >= 2);
}
publicstaticboolean有两个元素(堆栈){
返回值(stack.size()>=2);
}
请参见

如何:

public static <E> boolean hasTwoElements(Stack<E> stack) {
    return (stack.size() >= 2);
}
publicstaticboolean有两个元素(堆栈){
返回值(stack.size()>=2);
}

请参见

如果您确实只能使用在
堆栈
类上声明的方法,而不能使用从父类继承的方法,请执行以下操作:

public static <E> boolean hasTwoElements(Stack<E> stack) {
    if (stack.empty())
        return false;
    E top = stack.pop();
    boolean hasTwo = ! stack.empty();
    stack.push(top);
    return hasTwo;
}
publicstaticboolean有两个元素(堆栈){
if(stack.empty())
返回false;
E top=stack.pop();
布尔hasTwo=!stack.empty();
栈。推(顶);
返回有两个;
}

如果您确实只能使用在
堆栈上声明的方法,而不能使用从父类继承的方法,请按如下方式操作:

public static <E> boolean hasTwoElements(Stack<E> stack) {
    if (stack.empty())
        return false;
    E top = stack.pop();
    boolean hasTwo = ! stack.empty();
    stack.push(top);
    return hasTwo;
}
publicstaticboolean有两个元素(堆栈){
if(stack.empty())
返回false;
E top=stack.pop();
布尔hasTwo=!stack.empty();
栈。推(顶);
返回有两个;
}

虽然这是一个很好的有用答案,但这是一个愚蠢的无用问题,应该删除这个问题。如果你的答案是向上的,那么OP就不能删除这个问题,所以我会投你的反对票。抱歉。我不会否决这个,但是如果OP的要求是只使用
Stack
方法push、pop和peek,那么这是无效的。这取决于
size()
是否被视为
Stack
API的一部分。我认为是的,但它是在向量上定义的,所以谁知道呢。如果只是检查大小就是答案,那么这个问题就没有意义了。@dave如果你编辑答案(不管是什么,真的),我可以删除我投的反对票。虽然这是一个很好的有用答案,但这是一个愚蠢的无用问题,应该删除这个问题。如果你的答案是向上的,那么OP就不能删除这个问题,所以我会投你的反对票。抱歉。我不会否决这个,但是如果OP的要求是只使用
Stack
方法push、pop和peek,那么这是无效的。这取决于
size()
是否被视为
Stack
API的一部分。我认为是的,但它是在向量上定义的,所以谁知道呢。如果只是检查大小就是答案,那么这个问题就没有意义了。@dave如果你编辑答案(不管是什么,真的),我可以删除我投的反对票。@Andreas
我只限于堆栈中的方法
。。。你自己做了研究并阅读了完整的问题吗?很可能,这是一个家庭作业问题,旨在查看OP是否理解堆栈。@Andreas
我仅限于堆栈中的方法。。。你自己做了研究并阅读了完整的问题吗?最有可能的是,这是一个家庭作业问题,旨在查看OP是否理解堆栈。我喜欢这个问题,而不是我删除的答案+1。我喜欢这个问题,而不是我删除的答案+1。