問題は、指定された番号の後に最小の回文整数を見つけることです。次のパリンドロームを見つけるための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ループが始まるたびにdigitとrevをリセットしませんでした。今プログラムが動作しています。 – ccg2k16