请参阅下面的回文的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);
}
}
答案 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);
}
}