Java 用堆栈反转单词

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

我不知道为什么这会给我一个错误。我在方法pop中,我想返回存储在顶部位置的值。虽然它说它们是不兼容的类型。我不明白为什么这应该是一个问题,因为我只希望字符打印出来的立场。这是一个更大的计划的一部分,只是让你知道,并将从不同的类得到这个词

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()