填充堆栈会导致错误

时间:2010-11-23 09:16:53

标签: java

我正在使用数组el的元素填充堆栈实例变量,但是在下面的行中它给出了一个错误,尽管我指定它是一堆整数。

错误:

  

不兼容的类型 - 找到java.util.Stack但是期望java.lang.Integer ...

代码:

import java.util.Stack;

public class SortedStack
{
  private Stack<Integer> stack = new Stack<Integer>();

  public SortedStack(Integer[] el)
  {
      for(int i = 0; i < el.length; i++)
      {
          el[i] = stack;  /** THIS LINE*/
      }
  }
}

5 个答案:

答案 0 :(得分:3)

要将项目添加到堆栈顶部,请使用push方法。

示例:

  public SortedStack(Integer[] el)
  {
      for(int i = 0; i < el.length; i++)
      {
          stack.push(el[i]);
      }
  }

这会将el数组中的元素推送到堆栈中。

答案 1 :(得分:1)

我认为你想要将el的元素添加到堆栈中。您试图将堆栈对象分配给el [i],这是不可能的。很明显你有错误。

所以你的代码应该如下:

public class SortedStack 
{ 
  private Stack<Integer> stack = new Stack<Integer>(); 

  public SortedStack(Integer[] el) 
  { 
      for(int i = 0; i < el.length; i++) 
      { 
          stack.push(el[i];
      } 
  } 
} 

答案 2 :(得分:0)

我不是Java开发人员,但我猜你是否想要在堆栈上放置一个值,你需要这样的东西:

stack.push(el[i]);

您的错误的原因是您尝试将整数数组中的第i个元素分配为堆栈。这是失败的,因为它无法将Stack转换为整数。

答案 3 :(得分:0)

使用Stack.push()方法。

stack.push(el[i]);

答案 4 :(得分:0)

要使用堆栈,您希望在其上方push()项目,并在准备再次使用时从堆栈中pop()。在你的情况下,继承堆栈似乎比包装它更合适。

import java.util.Stack;

public class SortedStack extends Stack<Integer>
{    
  public SortedStack(Integer[] el) // Why "Sorted"? You're not sorting here...
  {
      for(int i = 0; i < el.length; i++)
      {
          this.push(el[i]);  /** THE ERROR IS THIS LINE */
      }
  }
}

这样做,您可以像使用常规堆栈一样使用SortedStack,并在构造函数中添加一系列元素。您可能还想实现一个PushRange()方法,该方法可以在实例化对象后调用。