我正在使用数组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*/
}
}
}
答案 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()
方法,该方法可以在实例化对象后调用。