与えられた範囲の回文数を見つけようとしています。これが私のコードです:
import java.util.Scanner;
import java.util.ArrayList;
public class PalindromeNums{
public static void main(String [] args){
Scanner input = new Scanner(System.in);
int start,end,rem,rev=0,temp;
ArrayList <Integer> palindrome = new ArrayList<>();
System.out.print("Start : ");
start = input.nextInt();
System.out.print("End : ");
end = input.nextInt();
temp = start;
for(int i = start; i <= end; i++){
while(temp != 0){
rem = temp % 10;
rev = rev * 10 + rem;
temp = temp / 10;
}
System.out.println(rev);
if(i == rev){
palindrome.add(i);
}
temp++;
rev = 0;
}
System.out.println(palindrome);
}
}
コードを実行すると、最初の整数に対してのみ正しい出力が得られます。指定された範囲内の他の整数では機能しません。この問題に対する提案/解決策はありますか?そして、なぜそれが機能しないのですか?
サンプル出力:
開始:33終了:55 33 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [33]
ループ内で温度が1ずつ増加していません。
// temp is initialized to start at first
while(temp != 0){
rem = temp % 10;
rev = rev * 10 + rem;
temp = temp / 10;
}
// at the end of this temp's value is entirely changed.
// above temp is incremented here, ideally temp at the start should be incremented. You can do this by initializing temp as i
temp++;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加