将对象从堆栈传输到堆栈而不是正确复制

时间:2014-03-17 03:11:05

标签: java stack

我试图通过将字符串添加到堆栈中来检查字符串是否是回文,然后将其弹出到新堆栈中,然后在最后比较它们。然而,当弹出新的元素时,实际上只有大约一半的元素转移到新的堆栈,我不知道为什么。这是代码:

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}}等等。它只打印出字符,就是这样。有关为什么可能如此或有更好的方法来解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:0)

在每次迭代中,您同时增加j并减小堆栈大小。他们将在中途见面。用

替换循环控件
while (stack.size() > 0)