Java программа для поиска чисел палиндрома в заданном диапазоне - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь найти Палиндром чисел в заданном диапазоне. Вот мой код:

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]

Ответы [ 3 ]

0 голосов
/ 05 мая 2018

Ваша температура не увеличивается на 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++;
0 голосов
/ 05 мая 2018

Пожалуйста, попробуйте это

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();

     // Picking Each Number Of That Range;
        for(int i = start; i <= end; i++){
            temp =i;
            // Checking whether Its Palindrome Or Not
            while(temp != 0){
                rem = temp % 10;
                rev = rev * 10 + rem;
                temp = temp / 10;
            }

            System.out.println(rev);
            if(i == rev){
                palindrome.add(i);
            }
            rev = 0;
        }
        System.out.println(palindrome);

    }
}
0 голосов
/ 05 мая 2018

К моменту окончания цикла temp будет 0, и, следовательно, вы не должны делать temp++.

Скорее, вам нужно присвоить текущий номер, который обрабатывается, temp в качестве первой строки цикла для как

temp = i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...