# Palindrome Number Program in Java

Previously we have developed many java programs based on Armstrong numbers. Now in this post, we will develop a palindrome number program in java. It will check the given number is palindrome number or not, and later we will develop an another Java program which will find all palindrome number in a between two numbers.

Palindrome number:- If the Reverse of a number is equal to the same number then the number is called palindrome number.

Example of palindrome number:-
5225 = 5225 So, 5225 is a palindrome number.
123 = 321 So, 123 is not a palindrome number.

This program completely depends on the program to find the reverse of a number. After finding the reverse of a number compare the result and the actual number if both are the same then the given number is a palindrome number else the number is not a palindrome number.

Prerequisite:- Java program to find reverse of a number

The process to check number is a palindrome number or not,
1) Take a number
2) Find the reverse of the number
3) If reverse and the actual number is the same then it a palindrome number
4) Else it is not a palindrome number

## Palindrome Number Program in Java

``````import java.util.Scanner;

// returns reverse of a number
public static int findReverse(int num) {

// declare a temporary variable and
// initialize it with 0
int reverse = 0;

// loop to repeat the process
while(num != 0) {

// find last digit of number
// multiply temporary variable by 10
// add last digit to temporary variable
reverse = (reverse*10 ) + (num%10);

// remove last digit
num = num / 10;
}
return reverse;
}

// returns true if number is Palindrome
public static boolean isPalindrome(int n) {
return (findReverse(n) == n) ? true : false;
}

public static void main(String[] args) {

// declare variable
int number = 0;

// create Scanner class object
Scanner scan = new Scanner(System.in);

// take input
System.out.print("Enter an integer number: ");
number = scan.nextInt();

// check number is palindrome or not
if(isPalindrome(number))
System.out.println(number+
" is a palindrome number");
else
System.out.println(number+
" is not a palindrome number");

// close Scanner class object
scan.close();
}
}``````

The output for different test-cases:-

Enter an integer number: 12345
12345 is not a palindrome number

Enter an integer number: 1234321
1234321 is a palindrome number

In this program, the `isPalindrome(-)` method also can be written using if-else,

``````public static boolean isPalindrome(int n) {
if(findReverse(n) == n)
return true;
else
return false;
}``````

## Java program to find all palindrome number in a given range

We can also find all the palindrome numbers between the two given numbers. For this purpose, we need to use the loop.

``````import java.util.Scanner;

// returns reverse of a number
public static int findReverse(int num) {

// declare a temporary variable and
// initialize it with 0
int reverse = 0;

// loop to repeat the process
while(num != 0) {

// find last digit of number
// multiply temporary variable by 10
// add last digit to temporary variable
reverse = (reverse*10 ) + (num%10);

// remove last digit
num = num / 10;
}
return reverse;
}

// returns true if number is Palindrome
public static boolean isPalindrome(int n) {
return (findReverse(n)==n) ? true : false;
}

public static void main(String[] args) {

// declare variables
int minRange , maxRange;

// create Scanner class object
Scanner scan = new Scanner(System.in);

System.out.print("Enter min Range value::");
minRange = scan.nextInt();
System.out.print("Enter max Range value::");
maxRange = scan.nextInt();

// find in the given range
System.out.println("Palindrome numbers "+
"from "+minRange+" to "+maxRange+":: ");

for(int i = minRange; i<= maxRange; i++) {
if(isPalindrome(i))
System.out.print( i + " ");
}

// close Scanner class object
scan.close();
}
}``````

The output for different test-cases:-

Enter min Range value:: 1
Enter max Range value:: 100
Palindrome numbers from 1 to 100::
`1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 `

Enter min Range value:: 100
Enter max Range value:: 200
Palindrome numbers from 100 to 200::
`101 111 121 131 141 151 161 171 181 191`

Enter min Range value:: 1000
Enter max Range value:: 2000
Palindrome numbers from 1000 to 2000::
`1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 `

## Another Way to Check the Palindrome Number

The idea is to compare the first digit with the last digit. Similarly, the second digit of the number with the (last-1) digit of the number, and so on… If all returns true then the given number is a palindrome number else it is not a palindrome number.

In this method first, we need to find the total number of digits in the given number. We need to compare only up to `number_of_digits/2`

If the number of digits in the given number is odd then no need to compare the middle number.

``````import java.util.Scanner;

// returns true if number is Palindrome
public static int findNumberOfDigits(int n) {

int digits = 0;
while(n != 0) {
digits++;
n /= 10;
}

return digits;
}

public static boolean isPalindrome(int num) {

// declare the variables
int leading_digit = 0;  // first digit
int trailing_digit = 0; // last digit
int n = num; // variable to store number

// count number of digits in the number
int digit_count = findNumberOfDigits(num);

// Find appropriate divisor to extract
int divisor =(int)Math.pow(10,digit_count-1);

// loop
for(int i=1; i<=digit_count/2; i++) {

trailing_digit = n%10; // last digit

// compare first and last digit
return false;

n = n % divisor; // remove first digit
n = n / 10; // remove last digit

// last digit &amp; first digit are removed
// so also divide the divisor by 10*10
divisor /= 100;
}
return true;
}

public static void main(String[] args) {

// declare variable
int number = 0;

// create Scanner class object
Scanner scan = new Scanner(System.in);

// take input
System.out.print("Enter an integer number:");
number = scan.nextInt();

// check number is palindrome or not
if(isPalindrome(number))
System.out.println(number+
" is a palindrome number");
else
System.out.println(number+
" is not a palindrome number");

// close Scanner class object
scan.close();

}
}``````

We can also use String to check the given number is a palindrome number or not, See:- Palindrome String in Java

If you enjoyed this post, share it with your friends. Do you want to share more information about the topic discussed above or you find anything incorrect? Let us know in the comments. Thank you!