想知道用的

时间:2013-11-09 12:52:50

标签: java

import java.util.Stack;

public class PalindromeTest {

    public static void main(String[] args) {

        String input = "test";
        Stack<Character> stack = new Stack<Character>();

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

        String reverseInput = "";

        while (!stack.isEmpty()) {
            reverseInput += stack.pop();
        }

        if (input.equals(reverseInput))
            System.out.println("Yo! that is a palindrome.");
        else
            System.out.println("No! that isn't a palindrome.");

    }
}

在上述计划中,目的是什么: reverseInput + = stack.pop();
分配时会发生什么,这个.i与此行混淆,可以解释任何一个吗?

1 个答案:

答案 0 :(得分:0)

它只是删除堆栈的最顶层字符,并使用Java通常的字符串连接将其附加到字符串reverseInput。因为它在该循环内部,所以它将删除字符,直到堆栈为空。这实际上是反转输入字符串(原始的第一个字符是堆栈中最底层的字符,因此它是反转字符串的最后一个字符)。

See java.util.Stack JavaDoc here.