Java 用堆栈反转单词
我不知道为什么这会给我一个错误。我在方法pop中,我想返回存储在顶部位置的值。虽然它说它们是不兼容的类型。我不明白为什么这应该是一个问题,因为我只希望字符打印出来的立场。这是一个更大的计划的一部分,只是让你知道,并将从不同的类得到这个词Java 用堆栈反转单词,java,stack,reverse,Java,Stack,Reverse,我不知道为什么这会给我一个错误。我在方法pop中,我想返回存储在顶部位置的值。虽然它说它们是不兼容的类型。我不明白为什么这应该是一个问题,因为我只希望字符打印出来的立场。这是一个更大的计划的一部分,只是让你知道,并将从不同的类得到这个词 public class Stack { private int maxSize; private String[] stackArray; private int top; /** * Constructor for objects of class Sta
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
}
}
stackArray
是一个string
数组,方法的返回类型是char
用堆栈反转单词 如果您想用<代码>堆栈对象反转一个单词,请考虑使用<代码> char 数组,而不是<代码>字符串数组< /c> > /p>
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());
您正在将
String
s推到数组(这是一个String
s的数组)上,并试图弹出一个char
。将您的方法更改为
public String pop() {
return stackArray[top--];
}
您的签名表示您正在返回一个字符,但您正在返回一个字符串 改变
public char pop()
到
你有两个选择
- 在
方法中,从顶部字符串返回所需的字符pop
- 在调用
的地方,从pop
返回的字符串中获取字符pop
第二个选择可能是两个选择中的更好的一个,因为人们希望
pop
返回堆栈上的任何类型。谢谢,我不知道我怎么看不到这一点。您的测试用例是在主类中还是在堆栈类中?这就简化了很多。谢谢!有没有办法不用getSize方法来回答这个问题?你可以删除这个方法,因为你知道堆栈中数组的大小是length()或你原来的单词
public char pop()
public String pop()