Reputation: 47
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
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
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
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
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:
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