检测回文

时间:2014-10-20 20:06:55

标签: java for-loop

所以我正在开发一个识别回文的程序(前后相同的单词)。为此,我将一个字符串的内容放入一个队列中,并一次堆叠一个字符。然后我有一个for循环比较堆栈的条目和队列的条目,看看它们是否匹配。如果每个角色都匹配,那么我们有一个回文。任何不匹配的字符都会导致匹配标志变为false并打破循环。问题是我的for循环不会运行。该程序完全跳过它。实际上它告诉我我的“匹配”变量未使用。任何帮助,将不胜感激。感谢您阅读我的帖子。

** 我为我的模糊道歉。 Stack和Queue是我自己设计的类。它们接受String输入,将String分成字符(char类型),为每个字符创建一个节点并连接它们。 Stack排在第一位,Queue排在第一位。空白1和空白2是空节点,在每个节点中充当起始标记。

public void palVerify(String s)
{
    boolean match=true;

    //creates stack
    Stack backward=new Stack(blank1);
    backward.push(s);

    //creates queue
    Queue forward=new Queue(blank2);
    forward.enqueue(s);


    // THIS LOOP WONT RUN

    for (int i=0; i < s.length(); i++)
    {
        if (backward.readTop()==forward.readFront())
        {

            backward.pop();
            forward.dequeue();
        }
        else
        {
            match=false;
            break;
        }

    }

    if (match=true)
        System.out.println("This word is a Palindrome");
    else
        System.out.println("This word is not a Palindrome");


}

3 个答案:

答案 0 :(得分:1)

您永远不会在代码中评估match,只会分配给它。这就是您获取未使用的变量警告的原因。

您可能希望在底部的if语句中评估match - 将if(match=true)(将匹配变量赋值为true)替换为if (match)(用于评估变量和分支)基于其价值)。

在for循环中 - 它可能正在运行(您可以在其开头添加System.out.println("Here");来证明它。但是,您使用==比较字符串 - 字符串比较应该使用equals方法。

我不确定blank1blank2是什么;我假设它们是在您的方法之外声明的成员或静态变量。我不认为你检测回文的逻辑(比较backward.readTopforward.readFront做你认为它做的事情,除非你使用自己的自定义版本{{ 1}}和Stack

答案 1 :(得分:-1)

public class JustForShow {

    public boolean isPalindrome(String text){
        if(text == null || text.isEmpty())
            return false;

        char []arr = text.toCharArray();
        for (int i = 0,y = (arr.length - 1); i<y; i++,y--) {
            if(arr[i] != arr[y]){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        String palind = "ABCDDCBA";
        JustForShow jfs = new JustForShow();
        System.out.println(jfs.isPalindrome(palind));
    }
}

答案 2 :(得分:-1)

这是一个有效的解决方案:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.print("Enter a three-digit integer: ");
    int number = input.nextInt();

    if (number / 100 == number % 10)
       System.out.println(number + " is a palindrome");
    else 
       System.out.println(number + " is not a palindrome");
 }