用堆栈反转单词

时间:2013-11-25 18:37:22

标签: java stack reverse

我不确定为什么这会给我一个错误。我在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
   }

}

4 个答案:

答案 0 :(得分:1)

stackArraystring数组,方法的返回类型为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能够返回堆栈中的任何类型。