我不确定为什么这会给我一个错误。我在pop方法中,我想返回存储在top位置的值。虽然它说它们是不兼容的类型。我不明白为什么它应该是一个问题,因为我只想在该位置打印出这个角色。这是一个更大的计划的一部分,因此你知道并将从另一个班级获得这个词。
public class Stack
{
private int maxSize;
private String[] stackArray;
private int top;
/**
* Constructor for objects of class Stack
*/
public Stack(int a)
{
maxSize = a;
stackArray = new String [maxSize];
top = -1;
}
public void push(String j)
{
top++;
stackArray[top] = j;
}
public char pop()
{
return stackArray[top--];//Error is here
}
}
答案 0 :(得分:1)
stackArray
是string
数组,方法的返回类型为char
。
使用堆栈反转单词
如果您想使用Stack
对象撤消某个字词,请考虑使用char
数组,而不是String array
。
class Stack
{
private int maxSize;
private char[] stackArray;
private int top;
/**
* Constructor for objects of class Stack
*/
public Stack(int a)
{
maxSize = a;
stackArray = new char [maxSize];
top = -1;
}
public void push(char j)
{
top++;
stackArray[top] = j;
}
public char pop()
{
return stackArray[top--];
}
public int getSize(){
return maxSize;
}
}
以下测试用例:
String s = "test";
Stack st = new Stack(s.length());
for(char c : s.toCharArray())
st.push(c);
for(int i = 0; i <st.getSize();i++)
System.out.print(st.pop());
输出:
tset
答案 1 :(得分:1)
您正在将String
推送到您的阵列(这是String
s的数组),并尝试弹出char
。将您的方法更改为
public String pop() {
return stackArray[top--];
}
答案 2 :(得分:0)
你的签名说你要归还一个字符,但是你要返回一个字符串。
更改
public char pop()
到
public String pop()
答案 3 :(得分:0)
您有两个选择
pop
方法中,从顶部字符串pop
的地方,从pop
返回的字符串中获取字符。第二种选择可能是两者中较好的一种,因为人们期望pop
能够返回堆栈中的任何类型。