Передача объектов из стека в стек неправильно копируется

1

Я пытаюсь проверить, является ли строка палиндром, добавив его в стек, а затем выталкивая из него в новый стек и затем сравнивая их в конце. Однако, когда вы выходите в новый, только около половины элементов фактически переносятся на новый стек, и я не уверен, почему. Вот код:

public void menu () {
    opt = JOptionPane.showInputDialog("Enter a word to see if it is a Palindrome: ");
    String temp = transform(opt);       

    Stack stack = new Stack ();
    Stack stack2 = new Stack();

    for (int i = 0; i < temp.length(); i++) {           
        stack.push(temp.charAt(i));
    }

    System.out.println(stack);

    for (int j = 0; j <= stack.size(); j++) {
        Object a = stack.pop();
        stack2.push(a);
    }
    System.out.println(stack2);

}

Единственное, что я могу придумать, это то, что мой метод transform исключает любое stack.replaceAll() пространство с помощью stack.replaceAll(), но когда я распечатываю первый стек, нет лишних символов или чего-то вроде ,H, т.д.. это просто распечатывает персонажей и все. Любые предложения относительно того, почему это может быть так, или если есть лучший способ сделать это?

Теги:
stack

1 ответ

0
Лучший ответ

На каждой итерации вы одновременно увеличиваете j и уменьшаете размер стека. Они собираются встретиться на полпути. Замените управление контуром на

while (stack.size() > 0)
  • 0
    Ааааа! в этом есть смысл, я даже не думал об этом. Спасибо!!
  • 1
    Или while(!stack.isEmpty())

Ещё вопросы

Сообщество Overcoder
Наверх
Меню