0

スタック データ構造を使用して単語を反転するプログラムを作成しています。動作するはずの方法は、文字列を入力し、文字列の各文字をスタック オブジェクトに挿入し、スタックから各オブジェクトをポップして出力することです。単語は元の入力とは逆の順序になります。これがスタックの仕組みだからです。

インデックスの範囲外の例外が発生し続けます。デバッグを行うと、Stack クラス内の最初の配列の初期化に関係していると思われますが、push() 関数にも関係している可能性があります。

コード全体は次のとおりです。

public class Stack      // object to emulate stack data structure
{
private int stackMaxSize;
private char stackArray[];
private int currentSize;

public Stack()    // if initialized without any parameters
{
    this(100);
}

public Stack(int maxSize)      // if initialized with parameter
{
    maxSize = stackMaxSize;
    stackArray = new char[stackMaxSize];
    currentSize = -1;
}

public void push(char c)   //pushes new character into stack
{
    stackArray[++currentSize] = c;
}

public char pop()     //pops character out of stack
{
    return stackArray[currentSize--];
}

public char peek()      // returns character on top of stack
{
    return stackArray[currentSize];
}

public boolean isEmpty()      // returns whether stack is empty or not
{
    return (currentSize < 0);
}
}

ここにメインがあります:

import java.util.Scanner;
public class ReverseWord
{
public static void main(String[] args)
{
   Stack wordStack = new Stack(100); // default size is 100

   System.out.print("Enter the word to be reversed: ");
   String word = getString();

    for (byte i = 0; i <= word.length(); i++)    // inserts word into stack char by char
    {
        wordStack.push(word.charAt(i));
    }

    System.out.print(wordStack.pop());


}

static String getString()
{
     Scanner input = new Scanner(System.in);
     String s = input.nextLine();
     return s;
}

}

どうもありがとう!

JLL

4

3 に答える 3