スタック データ構造を使用して単語を反転するプログラムを作成しています。動作するはずの方法は、文字列を入力し、文字列の各文字をスタック オブジェクトに挿入し、スタックから各オブジェクトをポップして出力することです。単語は元の入力とは逆の順序になります。これがスタックの仕組みだからです。
インデックスの範囲外の例外が発生し続けます。デバッグを行うと、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