Search code examples
javaloopspalindrome

Logic behind checking if a number is a Palindrome


I have made a program to check if a number is palindrome but unable to understand --When n=1 and I do n/10 should it not be = 0 as int n = 1/10 = 0.1=0 so loop should stop ? But it prints as 1 and then 0 . How does that happen ?

import java.util.Scanner;


public class Pallinnumber
{
    public static void main(String[] args) 
    {
        int y =reversenum(1234);
        System.out.println(y);
        Pallinnumber.Pallinnum(12);
        Scanner s = new Scanner(System.in);
        System.out.println("Enter the number");
        int x = s.nextInt();
        int z= reversenum(x);
       System.out.println(z);

}

    public static int reversenum(int n)
    {
        int num=0;
        while(n>0)
        {
            num = num*10;
            num=num+n%10;
            n=n/10;
            System.out.println(n);      

        }
    return num;
    }
public static boolean Pallinnum(int n)
{
    if(n==reversenum(n)){
        System.out.println("It is a Pallindrome number");
        return true;
    }
    else 
        {   

            System.out.println("It is not an Pallindrome number");
            return false ;

        }
    }

}


Solution

  • There is no error in the code: when n is 1, you do n /= 10 after adding n%10 to the running total (i.e. num). This makes num equal 1, which is what you want.

    By the time your loop prints zero, num is already equal to 1.