Я пытаюсь проверить, является ли строка палиндром, добавив его в стек, а затем выталкивая из него в новый стек и затем сравнивая их в конце. Однако, когда вы выходите в новый, только около половины элементов фактически переносятся на новый стек, и я не уверен, почему. Вот код:
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,
т.д.. это просто распечатывает персонажей и все. Любые предложения относительно того, почему это может быть так, или если есть лучший способ сделать это?
На каждой итерации вы одновременно увеличиваете j и уменьшаете размер стека. Они собираются встретиться на полпути. Замените управление контуром на
while (stack.size() > 0)
while(!stack.isEmpty())