我试图通过将字符串添加到堆栈中来检查字符串是否是回文,然后将其弹出到新堆栈中,然后在最后比较它们。然而,当弹出新的元素时,实际上只有大约一半的元素转移到新的堆栈,我不知道为什么。这是代码:
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()
消除了任何空格,但是当我打印出第一个堆栈时,没有额外的字符或类似{{{ 1}}等等。它只打印出字符,就是这样。有关为什么可能如此或有更好的方法来解决这个问题的任何建议?
答案 0 :(得分:0)
在每次迭代中,您同时增加j并减小堆栈大小。他们将在中途见面。用
替换循环控件while (stack.size() > 0)