2013-11-25 39 views
0

我不知道爲什麼這給了我一個錯誤。我在彈出方法,我想返回存儲在位置頂部的值。雖然它說它們是不兼容的類型。我不明白爲什麼它應該是一個問題,因爲我只想在該位置打印字符。這是一個更大程序的一部分,所以你知道並將從不同的課程中獲得這個詞。可逆字堆棧

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 
    } 

} 

回答

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 
+0

您的測試用例是在主類還是Stack類中? – Demostroyer

+0

一個主要的,你可以看到它在這裏工作:http://ideone.com/w0aRzh –

+0

它簡化了這麼多。非常感謝! – Demostroyer

1

你推String小號到您的數組(這是String秒的陣列),並試圖彈出一個char。你的方法更改爲

public String pop() { 
    return stackArray[top--]; 
} 
+0

謝謝,我不知道我是怎麼沒看到的。 – Demostroyer

0

您的簽名說你是返回一個char,但你是返回一個字符串。

變化

public char pop() 

public String pop() 
0

你有兩個選擇

  • pop方法,返回你從上面的字符串
  • ,您撥打想要的字符pop,得到char f rom從pop返回的字符串。

第二種選擇可能是兩者中較好的一個,因爲人們預計pop將返回棧中的任何類型。