不使用库函数进行回文数字判断
不使用库函数,判断回文数字。
其实最核心的就是如何将一个正整型数字转成数组,我们可以使用数学的取模%和数学的整除/将数字的各个位数取出,逐一放入目标数组中即可。
public class ReverseNumber { /** * @param args */ public static void main(String[] args) { int input = 12321; int[] reverseNum = ReverseNumber.getReverse(input); int[] originalNum = ReverseNumber.getReverse(reverseNum); if (ReverseNumber.isSameArray(reverseNum, originalNum)) { System.out.println("It is a reverse number."); } else { System.out.println("It is not a reverse number."); } } /* * 将目标输入的整数,不经过库函数,转成反序的数组A。 * @input int originalNum 目标整数 * @return int[] 返回反序的数组 */ public static int[] getReverse(int originalNum) { int[] reversedNum = new int[30]; int i = 0; while(originalNum != 0) { reversedNum[i++] = originalNum % 10; //使用数学取模操作,获得最后一位,并计入目标数组中 originalNum = originalNum / 10; //使用数学整除,移除上已经计入数组的最后一位。 } return reversedNum; } /* * 将数组反向排列一次,得到一个A的反向数组B(即原来的整数的数组形式) * @input int[] reverseNum 要转序的数组 * @return int[] 返回转序完毕的数组 */ public static int[] getReverse(int[] reverseNum) { int[] descNum = new int[30]; int lengthOfNum = reverseNum.length; for(int i = 0; i < lengthOfNum; i++) { descNum[lengthOfNum - i -1] = reverseNum[i]; } return descNum; } /* * 将数组A和数组B比较,看是否是反序一样的数组。 * @input int[] originalNum, int[] reversNum 要比较的两个数组 * @return boolean 返回判断结果,如果是回文数,返回true; 如果不是回文数,返回false. */ public static boolean isSameArray(int[] originalNum, int[] reversNum) { boolean result = true; if (originalNum.length == reversNum.length) { int len = originalNum.length; for (int i =0; i < len; i++) { if (originalNum[i] != reversNum[len - i - 1]) { result = false; break; } } } else { result = false; } return result; }}