Java-программа, которая проверяет, являются ли числа между заданными диапазонами палиндромами

поэтому я пытаюсь написать эту Java-программу, которая будет проверять и отображать все числа палиндрома от 0 до 10000. Метод isPalindrome должен принимать число int и возвращать логическое значение true, если число является палиндромом, и false, если это не палиндром.

Вот мой код до сих пор, но когда я его запускаю, он печатает только строку из 1. Печать, которую я добавил в конце, предназначена для отладки и проверки, работает ли метод, но в этом случае это не так. Я также инициализировал numCount равным 1, потому что не мог понять, как заставить метод работать, когда num должно быть больше 0. Инициализация numCount равным 0 заставила бы программу пропустить всю часть num > 0.

Код:

import javax.swing.*;
import java.text.*;

public class PalindromeCheck 
{

    public static void main(String [] args)
    { 
        //variables 
        int numCount = 1;
        final int END = 10000;
        boolean palindrome; 

        //methods
        palindrome = isPalindrome(numCount, END);

    }//end main 
    public static boolean isPalindrome(int numCount, int END)
    { 

        //local variables 
        int num, num2 = numCount, remainder, reverseNum;
        boolean palindrome;
        palindrome = false;


        while (numCount <= END)
        {

            num = numCount;
            remainder = 0;
            reverseNum = 0;

                while (num > 0)
                {


                    remainder = num % 10;
                    num = num / 10;
                    reverseNum = (reverseNum * 10) + remainder;

                    if (reverseNum == num2)
                    {   
                        palindrome = true;
                    }
                    else 
                    {
                        palindrome = false;
                    }

                        if(palindrome == true)
                        {
                            System.out.print("  " + reverseNum);
                        }



                 }//end Minor Loop

            numCount++;

        }//end of Major Loop

        return palindrome;
    }//end of method isPalindrome

}//end of class

person Mher Charachian    schedule 16.11.2015    source источник
comment
Возможно, вам следует подумать о работе со строками для представления палиндрома.   -  person Tim Biegeleisen    schedule 16.11.2015
comment
но я хочу проверять числа, а не строки   -  person Mher Charachian    schedule 16.11.2015
comment
Класс StringBuilder имеет метод обращения строк. Он очень прост в использовании.   -  person Tim Biegeleisen    schedule 16.11.2015
comment
Видите ли, я учусь на первом курсе информатики и еще не знаком с этим классом.   -  person Mher Charachian    schedule 16.11.2015


Ответы (3)


Вы можете использовать этот метод для поиска Палиндромов без использования StringBuilder

 public boolean isPalindrome(int number){ 
   //number=12321
   int num = number;
   //reversing number
   int reverse=0,rmd; 
   while(number > 0) 
   { 
     rmd = number % 10; 
     reverse = reverse * 10 + rmd; 
     number = number / 10; 
   } 
   if(reverse == num) 
     //true
   else
     //false
 }
person Madushan Perera    schedule 16.11.2015

Преобразуйте число в объект StringBuilder, затем используйте обратный метод в классе StringBuilder, чтобы создать новый объект StringBuilder, а затем сравните содержимое двух объектов StringBuilder.

person nicomp    schedule 16.11.2015
comment
Можно ли сделать это без использования классов, потому что я еще не узнал, что - person Mher Charachian; 16.11.2015
comment
Все в Java находится в классах. - person nicomp; 16.11.2015
comment
Но до сих пор я знаю только класс Math, поэтому я не знаю, как использовать этот класс StringBuilder, о котором вы говорите. - person Mher Charachian; 16.11.2015
comment
мне нужно написать эту программу, используя метод numDigit, который принимает целое число и возвращает количество цифр этого целого числа, и метод isPalindrome, который принимает целое число и возвращает логическое значение true, если число является палиндромом, и false, если это не так. - person Mher Charachian; 16.11.2015

Ваш num2 не увеличивается как ваш numCount. В то время как ваш numCount увеличивается в конце цикла, num2 всегда равен 1, поскольку num2 не устанавливается равным numCount каждый раз, когда цикл начинается.

if (reverseNum == num2)

Таким образом, вышеизложенное верно только в том случае, если reverseNum == 1 Добавьте строку в свой код, и он должен работать

while (numCount <= END)
    {
        if (numCount == 0)  // special case for 0
        {
            System.out.print("0");
            numCount++;
            continue;
        }

        num = numCount;
        num2 = numCount;   // <- add this line

        // your original code here

    }//end of Major Loop
person Porz    schedule 16.11.2015
comment
спасибо, не могли бы вы объяснить подробнее, почему мой код не работал? - person Mher Charachian; 16.11.2015
comment
как я могу сделать так, чтобы программа могла начинаться с 0 вместо 1? потому что число должно быть больше 0, поэтому программа входит в цикл - person Mher Charachian; 16.11.2015
comment
Я бы просто добавил строку if для 0, так как это особый случай в вашем коде. - person Porz; 16.11.2015