Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是数组堆栈中的x。我不知道为什么我的代码不起作用。因为它返回false,即使我给出了ArrayStack中的x public静态布尔xIn(Stack st,int x)引发异常{ int结果; int size=st.getSize(); 对于(int i=0;i_Java - Fatal编程技术网

Java 是数组堆栈中的x。我不知道为什么我的代码不起作用。因为它返回false,即使我给出了ArrayStack中的x public静态布尔xIn(Stack st,int x)引发异常{ int结果; int size=st.getSize(); 对于(int i=0;i

Java 是数组堆栈中的x。我不知道为什么我的代码不起作用。因为它返回false,即使我给出了ArrayStack中的x public静态布尔xIn(Stack st,int x)引发异常{ int结果; int size=st.getSize(); 对于(int i=0;i,java,Java,从堆栈中弹出一个项目时,将其从顶部移除。当你把一个项目推到一个堆栈中时,你把它放在顶部 您只持续检查堆栈顶部的第一个元素 另外,还有一件事,在返回true之前,您是否应该将元素推回到堆栈中?当您从堆栈中弹出一个项目时,您将其从顶部移除。当你把一个项目推到一个堆栈中时,你把它放在顶部 您只持续检查堆栈顶部的第一个元素 另外,还有一件事,您是否应该在返回true之前将元素推回到堆栈中?您总是检查最后一个元素,弹出它,然后再次推。 例如,使用增强的for循环来迭代堆栈。您总是检查最后一个元素,弹出它,

从堆栈中弹出一个项目时,将其从顶部移除。当你
把一个项目推到一个堆栈中时,你把它放在顶部

您只持续检查堆栈顶部的第一个元素


另外,还有一件事,在
返回true
之前,您是否应该
将元素推回到堆栈中?

当您
从堆栈中弹出一个项目时,您将其从顶部移除。当你
把一个项目推到一个堆栈中时,你把它放在顶部

您只持续检查堆栈顶部的第一个元素


另外,还有一件事,您是否应该在
返回true
之前将
元素推回到堆栈中?

您总是检查最后一个元素,弹出它,然后再次推。
例如,使用增强的for循环来迭代堆栈。

您总是检查最后一个元素,弹出它,然后再次推动它。 例如,使用增强的for循环来迭代堆栈。

尝试以下方法:

public static boolean xIn(Stack<Integer> st, int x) throws Exception {

    int result;
    int size = st.getSize();

    for (int i = 0; i < size; i++) {
        result = st.pop();
        if (x == result) {
            return true;
        }
        st.push(result);
    }
    return false;
}
公共静态布尔xIn(堆栈st,int x){
int结果;
int size=st.getSize();
对于(int i=0;i
另外,我建议您看看这里
有很多预定义的方法可以完成您的工作,例如:
搜索(obj o)
包含(obj o)

请尝试以下操作:

public static boolean xIn(Stack<Integer> st, int x) throws Exception {

    int result;
    int size = st.getSize();

    for (int i = 0; i < size; i++) {
        result = st.pop();
        if (x == result) {
            return true;
        }
        st.push(result);
    }
    return false;
}
公共静态布尔xIn(堆栈st,int x){
int结果;
int size=st.getSize();
对于(int i=0;i
另外,我建议您看看这里
有很多预定义的方法可以完成您的工作,例如:
搜索(obj o)
包含(obj o)

公共静态布尔xIn(Stack st,int x)引发异常{
堆栈温度=新阵列堆栈();
int结果;
int size=st.getSize();
对于(int i=0;i
公共静态布尔值xIn(堆栈st,int x)引发异常{
堆栈温度=新阵列堆栈();
int结果;
int size=st.getSize();
对于(int i=0;i
????我的代码在逻辑上不正确。我觉得很好。您需要有ArrayStack和Stack接口以及用于此的方法)不要将对象与==进行比较。此外,在循环中弹出然后推入始终会比较位于堆栈顶部的相同元素。为什么不使用Stack.contains()?不应该使用==来比较对象,可以使用.equals或更好的方法,可以使用Stack.contains。如果要实现自己的堆栈,则此方法应该是堆栈类本身的一部分。这样,您只需要迭代堆栈的元素,而不是弹出和推送。stack类提供了一个迭代器,因此最简单的解决方案是
boolean xIn(stack st,int x){for(Integer i:st),如果(i.equals(x))返回true;返回false;}
????我的代码在逻辑上不正确。我觉得很好。您需要有ArrayStack和Stack接口以及用于此的方法)不要将对象与==进行比较。此外,在循环中弹出然后推入始终会比较位于堆栈顶部的相同元素。为什么不使用Stack.contains()?不应该使用==来比较对象,可以使用.equals或更好的方法,可以使用Stack.contains。如果要实现自己的堆栈,则此方法应该是堆栈类本身的一部分。这样,您只需要迭代堆栈的元素,而不是弹出和推送。堆栈类提供了一个迭代器,因此最简单的解决方案是
boolean xIn(stack st,int x){for(Integer i:st),如果(i.equals(x))返回true;返回false;}
这是错误的,
temp
堆栈对您没有帮助,因为在将元素推回原始堆栈之前,从函数返回
。不要使用
返回值
,而是使用一个在末尾返回的布尔变量。假设您找到了x,您将在删除几乎所有st后返回。您可能应该编辑原始问题,而不是发布新答案。还使用整数处理一个常见的pitfal。这是错误的,
temp
stack对您没有帮助,因为在将元素推回原始堆栈之前,您从函数返回
。不要使用
返回值
,而是使用一个在末尾返回的布尔变量。假设您找到了x,您将在删除几乎所有st后返回。您可能应该编辑原始问题,而不是发布新答案。还解决了一个带有整数的常见pitfal。我假设他使用从java.util.vector继承来的java.util.stack,而java.util.vector又有get(int index)方法在这种情况下,他应该使用stack.contains()。我假设他使用从java.util.vector继承来的java.util.stack,而java.util.vector又有get(int index)方法在这种情况下,他应该使用Stack.contains()。
 public static boolean xIn(Stack<Integer> st, int x) throws Exception {
   Stack<Integer> temp=new ArrayStack();
    int result;
    int size = st.getSize();

    for (int i = 0; i < size; i++) {
        result = st.pop();
        if (x == result) {
            return true;
        }
        temp.push(result);
    }
     for (int i = 0; i < size; i++) {
         result=temp.pop();
         st.push(result);
     }

    return false;
}