2

テキストボックスの文字列からスタックに文字を追加しようとしています。

これまでの私のコードは次のとおりです。

String s = txtString.getText();
Stack myStack = new LinkedStack();

  for (int i = 1; i <= s.length(); i++)
{
    while(i<=s.length())
        {
         char c = s.charAt(i);
        myStack.push(c); 
        }
       System.out.print("The stack is:\n"+ myStack);
}

LinkedStackのプッシュアンドポップメソッド

public void push(Object item){
  top = new ListNode(item, top); 
}

public void pop(){
  if(isEmpty())
    throw new StackUnderflowException("Nothing removed-stack is empty");
  else
   top = top.getNext();
}

getnext()メソッドは、listnodesと呼ばれる別のパッケージから取得されます

public ListNode getNext() {
    return nextNode; // get next node
} // end method getNext

印刷を+cに変更すると、文字列のすべての文字が印刷されますが、myStackの場合は、文字列がインデックス範囲外のエラーになります。

誰かが私が欠けているものを知っていますか?

4

3 に答える 3

2

LinkedStack.toString終了していません。おそらくそこに基本的なケースがありません。それに適切な基本ケースを追加し、および/またはプッシュまたはポップのバグが原因でスタックが循環的にならないようにしてください。印刷は正常に機能するはずです。

あなたのpush実装は問題ないように見えますが、pop割り当てられていないためtop、間違いなく壊れています。

于 2011-09-20T00:08:54.867 に答える