检查回文是否不起作用

时间:2014-04-17 15:51:07

标签: java compare palindrome

我试图制作一个简单的程序,比较一个数字或单词是一个回文。我做了以下代码,但我不知道为什么我的if语句不起作用。如果你打印结果,你可以看到数字或字母是相同的,但我的if语句并不这么认为。这是我的代码。谢谢:

import java.util.*;
public class myPalindromo
  {
public static void main(String[] args)
{
    // TODO Auto-generated method stub  
    String number;  

    ArrayList < String > myNumber = new ArrayList < String > ();

    Scanner sn = new Scanner(System.in);
    number= sn.nextLine();

    for(int i = 0 ; i<number.length() ; i++)
    {
        myNumber.add(number.valueOf(number.charAt(i)));
    }

    for(int i = 0; i<myNumber.size(); i++)
    {

        System.out.println(myNumber.get(i)+"=="+myNumber.get((myNumber.size()-1)-i));

        if(myNumber.get(i)== myNumber.get((myNumber.size()-1)-i))
            System.out.println("palindrome");
        else
            System.out.println("not palindrome");


    }

}

}

3 个答案:

答案 0 :(得分:0)

要检查字符串是否为回文,请尝试以下操作:

static boolean isPalindrome(String s) {
    int center = (int)s.length()/2 - 1;
    for (int i = 0; i <= center; i++) {
        if (s.charAt(i) != s.charAt(s.length() - i-1) )
            return false;
    }
    return true;
}

答案 1 :(得分:0)

您应该将If语句更改为此

if(Integer.parseInt(myNumber.get(i))== Integer.parseInt(myNumber.get((myNumber.size()-1)-i)))

那是因为你在比较字符串而不是实际数字。

答案 2 :(得分:0)

您可以在StringBuilder中使用reverse方法来完成此任务。

public static boolean isPalindrome(String str) {
    return str.equals(new StringBuilder(str).reverse().toString());
}