判断回文数

来源:互联网 发布:ig是什么社交软件 编辑:程序博客网 时间:2024/06/08 02:45

如果一个数的反向倒置数和它的顺向数一样,那么这个数称为回文数。编写一个测试程序,提示用户输入一个整数值,然后报告这个数是不是回文数。

我先后一共写了三个函数。

方法一:由于题目要求输入的是整数值,所以按照整数的方法倒置数字,与原数比较即可。

public class Palindrom {public static void main(String[] args) {System.out.println("Enter a integer:");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();System.out.println(num +  (isPalindrom(num)?" is ":" isn't ") + "palindrom");}public static boolean isPalindrom(int num){return num == reverse(num);}public static int reverse(int num) {int length = String.valueOf(num).length();if (length == 1) {return num;}else {return (int)(num / Math.pow(10, length-1)) +reverse((int)(num  % Math.pow(10, length-1) )) * 10 ;}}}
但是这种方法是错误的。如reverse(101)的结果其实是11而非101,原因是101%10^2的结果是1而不是01。

方法二:将数字当做字符串,将字符串倒置后比较。

public class Palindrom {public static void main(String[] args) {System.out.println("Enter a integer:");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();System.out.println(num +  (isPalindrom(num)?" is ":" isn't ") + "palindrom");}public static boolean isPalindrom(int num){String reverseString = reverse(String.valueOf(num));return num == Integer.valueOf(reverseString);}public static String reverse(String string) {int length = string.length();if (length == 1 ) {return string;}else {return reverse(string.substring(1)).concat(String.valueOf(string.charAt(0)));}}}
方法三:在学习了StringBuilder类之后,利用StringBuilder中reverse()方法。

public class Palindrom {public static void main(String[] args) {System.out.println("Enter a integer:");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();System.out.println(num +  (isPalindrom(num)?" is ":" isn't ") + "palindrom");}public static boolean isPalindrom(int num){StringBuilder stringBuilder = new StringBuilder(String.valueOf(num));String reverseString = stringBuilder.reverse().toString();return num == Integer.valueOf(reverseString);}}



0 0