为什么整数回文的这种逻辑是错误的

时间:2017-10-26 09:13:35

标签: java integer palindrome

  

请参阅下面的回文的Java代码。     这是为了检查代码逻辑是对还是错

/* Please expalin why this logic is wrong*/

public class IntegerIsPalindrome {
    public static boolean numPalindrome(int x){
        String ParseNum = Integer.toString(x);
        int lenPar = ParseNum.length();
        for(int i = 0 ; i < ParseNum.length();i++){
            if(ParseNum.charAt(0) != ParseNum.charAt(lenPar -1 -i)){
                return false;
            }
        }
        return true;
    }
    public static void main(String args[]){
        boolean result = numPalindrome(323);
        System.out.println(result);
    }
}

3 个答案:

答案 0 :(得分:3)

这是因为你总是比较第一个角色。具体做法是:

ParseNum.charAt(0)...

您应该将其更改为:

ParseNum.charAt(i)...

观察323,比较第一个字符“3”和最后一个“3”。然后,将第一个'3'与'2'进行比较,结果为假。

答案 1 :(得分:0)

你应该迭代循环到ParseNum.length()/ 2就足够了。

例如:如果值为12321,

你应该检查

带有charAt [4]的

charAt [0]表示1 = 1

charAt [1]与charAt [3]意味着2 = 2

for(int i = 0 ; i < ParseNum.length()/2;i++){
     if(ParseNum.charAt(i) != ParseNum.charAt(lenPar -1 -i)){
         return false;
     }
}

答案 2 :(得分:0)

您需要将for循环中的ParseNum.charAt(0)更改为ParseNum.charAt(i)

在这里您可以轻松找到回文代码:

package com.company;

import java.util.Scanner;

public class Palindrome
{
  public static void main(String[] args)
  {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Input: ");
    String input = scanner.next();
    System.out.println(isPalindrome(input) ? "palindrome" : "not a palindrome");
  }

  private static boolean isPalindrome(String input)
  {
    String temp = "";
    for (int i = input.length() - 1; i >= 0; i--)
    {
      temp += input.charAt(i);
    }
    return input.equalsIgnoreCase(temp);
  }
}