q1612749
q1612749

Reputation: 47

I want to implement two methods to check if a number is a palindrome

As above, I have two methods,

public static int reverse(int number)

and

public static boolean isPalindrome(int number)

I should arrange them to check whether a number is palindrome or not. I tried to apply the hint (a number is palindrome if (its reversal == itself)) but it did not help.

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        System.out.println("This program checks whether a number is palindrome or not. Enter a number: ");
        Scanner input = new Scanner(System.in);
        int inputNumber = input.nextInt();

        // if inputNumber is palindrome 

        System.out.println("The number is palindrome.");

        // else 

        System.out.println("The number is not a palindrome.");
    }


        public static int reverse(int number)

        // reverse number


        public static boolean isPalindrome(int number)

        // check if the number is palindrome     
    }
}

Upvotes: 0

Views: 273

Answers (4)

Arpan Das
Arpan Das

Reputation: 1037

The following algorithm will work

1. Loop until the input number become 0.

    1.1 remainder = number % 10;
    1.2 reverse = reverse * 10 + remainder;
    1.3 number = number / 10;

2. Return reverse when the loop breaks. That means number became 0.

Check full implementation here.

Upvotes: 0

q1612749
q1612749

Reputation: 47

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.println("Enter an integer: " );
        int inputNumber = input.nextInt();

        if (isPalindrome(inputNumber))
            System.out.println(inputNumber + " is a palindrome. ");
        else
            System.out.println(inputNumber + " is not a palindrome. ");

        input.close();
    }

    public static int reverse(int n1) {
        int reversedNumber = 0;
        while (n1 != 0) {
            reversedNumber *= 10;
            reversedNumber += (n1 % 10);
            n1 /= 10;
        }

        return reversedNumber;
    }

    public static boolean isPalindrome(int n2) {
        if (n2 == reverse(n2))
            return true;
        else
            return false;

    }
}

This is a solution to the problem. But this does not cover the case in which I could enter "011" and the program will say that "11" is a palindrome. How could I solve this?

Upvotes: 0

cody123
cody123

Reputation: 2080

Try this method for reverse.

Step0  : temp = 0 number  = 4554
Step 1 : temp = 4 number = 455
Step 2 : temp = 4*10 +  5 = 45 and number = 45
Step 3 : temp = 45*10 + 5 = 455 and number  = 4
Step 4 : temp = 455*10 + 4 = 4554 and number  = 0


    if (inputNumber == reverse(inputNumber)) {
        System.out.println("The number is palindrome.");
    }else{
        System.out.println("The number is not a palindrome.");
    }

public static int reverse(int number) {
    int temp = 0;
    while (number > 0) {
        temp = temp * 10 + number % 10;
        number = number / 10;
    }
    return temp;
}

Upvotes: 0

Dmitry Smorzhok
Dmitry Smorzhok

Reputation: 635

In order to reverse a number you should divide it by 10 and add the remainder to a new reversed number multiplied by 10.

For example, this will be the steps of reverting 123:

  1. reversed = 0, target = 123
  2. reversed = 0 * 10 + 123 % 10 = 0 + 3 = 3, target = 123 / 10 = 12
  3. reversed = 3 * 10 + 12 % 10 = 30 + 2 = 32, target = 12 / 10 = 1
  4. reversed = 32 * 10 + 1 % 10 = 320 + 1 = 321, target = 1 / 10 = 0

Here is implementation of this algorithm in Java:

public static int reverse(int number) {
    int reversed = 0;
    while (number > 0) {
        reversed *= 10;
        reversed += number % 10;
        number /= 10;
    }
    return reversed;
}

public static boolean isPalindrome(int number) {
    return number == reverse(number);
}

Upvotes: 2

Related Questions