问题是在给定数字后面找到最小的回文数整数。用于查找下一个回文的Java代码 - 输出错误
输入整数即测试用例的数量。
在数组中输入整数。
- 输出:分别对应数组中每个整数的下一个回文数整数。
有各种方法来解决这个问题(许多解决方案也是如此),但我不明白为什么我不能从这个代码得到输出。从多次运行代码,我得出的结论是,如果任何测试用例需要超过1个增量才能成为回文,则程序会以某种方式进入无限循环。例如,如果我输入100作为测试用例,则输出为101.类似地,如果输入908,则得到909作为输出。但是如果我输入108,我不会得到111输出。
请忍受我愚蠢的错误,我是Java编程新手。由于
import java.util.Scanner;
class nextPalindrome {
public static void nextPalindromeGenerate(int n)
{
int flag=1;
int digit; //to store the mod value
int rev=0; //reverse of the number
int original; //dummy to store the original number
if(n<10)
{ System.out.println(n+1); //If number is single digit, next smallest palindrome is n+1
flag=0;
}
while(flag!=0)
{ ++n;
original=n;
while(n>0) //loop for reversing the number
{
digit=n%10;
rev=rev*10+digit;
n=n/10;
}
if(rev==original) //check if original equals the reverse(original)
{
System.out.println(rev);
flag=0;
}
else flag=1;
}
}
public static void main(String[] args)
{
@SuppressWarnings("resource")
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] palinList=new int[n];
for(int i=0;i<n;i++)
{
palinList[i]=sc.nextInt();;
}
for(int j=0;j<n;j++)
{
nextPalindromeGenerate(palinList[j]);
}
}
}
谢谢。这真的很有帮助。此外,我没有重置数字,并在每次while循环开始时都进行转动。现在该程序正在运行。 – ccg2k16