版权声明:最终解释权归属Hern所有,恒! https://blog.csdn.net/qq_36761831/article/details/82730647
小于0的整数不符合要求。
若一个数不是回文数,相加12轮产生一个回文数。
package com.Hern;
import java.util.*;
import java.math.*;
public class Test {
private static final int MAX_N = 19;//限定数组的长度
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int num = cin.nextInt();
int temp = findPalindrome(num);
if(temp == -1) {
System.out.println("负数");
}
if(temp == num) {
System.out.println("是回文数!");
}else {
System.out.println("该数不是回文!");
System.out.println("该数不断相加产生的第一个回文数是:"+temp);
}
}
public static int findPalindrome(int num) {
if(num < 0) {//输入的数小于0
return -1;
}
if(isPalindrome(num)) {//输入的数是回文数
return num;
}
return findPalindrome(num + reverseNumber(num));//输入的数不是回文数,并输出该数不断相加产生的下一个回文数
}
//判断是否为回文数
public static boolean isPalindrome(int num) {
int flag = 0;
int[] n = new int[MAX_N];
if(num >= 0 && num <= 9) {//对于任意一个0~9的整数都是回文
return true;
}
while(num > 0) {
n[flag++] = num%10;
num /= 10;
}
for(int i = 0; i < flag/2; i++) {
if(n[i] != n[flag - i -1]) {
return false;
}
}
return true;
}
//数本身不断递增计算
public static int reverseNumber(int num) {
int ret = 0;
int flag = 0;
int[] n = new int[MAX_N];
while(num > 0) {
n[flag++] = num%10;
num /= 10;
}
for(int i = 0; i < flag; i++) {
ret *= 10;
ret += n[i];
}
return ret;
}
}