問題是在給定數字後面找到最小的迴文數整數。用於查找下一個迴文的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