java palindrome test Can someone tell me why the following code returns -2079588
ID: 662403 • Letter: J
Question
java palindrome test
Can someone tell me why the following code returns -2079588352 ?
import static java.lang.Integer.*;
import java.util.Scanner;
public class Palindrome
{
public static int numEntered;
public static int revNumber;
// public static int reverse;
public static void main(String args[])
{
System.out.println("Enter the number to test: ");
Scanner in = new Scanner(System.in);
numEntered = in.nextInt();
reverseInput();
PalindromeTest();
}
public static void reverseInput()
{
revNumber = reverse(numEntered);
System.out.println("Reverse of number: " + numEntered + " is " + revNumber);
}
public static void PalindromeTest()
{
if( numEntered == revNumber )
System.out.println("The number entered is a palindrome. The number is: " + numEntered);
}
}
Explanation / Answer
In the static method reverseInput , the method reverse of Integer wrapper class returns the value obtained
by reversing the order of the bits in the two's complement binary representation of the specified int value.
Thats why the method reverse returns postive or negative after reversing the bits of the entered number.
For example,
Number = 12
Binary = 1100
After reversing order of bits in two's complement then the number 12 becomes 805306368
----------------------------------------------------------------------------------------------------------
//Palindrome.java
import java.util.Scanner;
public class Palindrome
{
public static int numEntered;
//set revNumber=0
public static int revNumber=0;
public static void main(String args[])
{
System.out.println("Enter the number to test: ");
Scanner in = new Scanner(System.in);
numEntered = in.nextInt();
reverseInput();
PalindromeTest();
}
public static void reverseInput()
{
//store the value of numEntered in the tempNumber variable
int tempNumber=numEntered;
//reverse the number
while(tempNumber!=0)
{
revNumber=revNumber*10+tempNumber%10;
tempNumber=tempNumber/10;
}
System.out.println("Reverse of number: " + numEntered + " is " + revNumber);
}
public static void PalindromeTest()
{
if(numEntered==revNumber)
System.out.println("The number entered is a palindrome. The number is: " + numEntered);
else
//If the numEntered is not the palindrome number print the message
System.out.println("The number entered is not a palindrome.");
}
}
--------------------------------------------------------------------------
sample output:
sample run1
Enter the number to test:
545
Reverse of number: 545 is 545
The number entered is a palindrome. The number is: 545
sample run2
Enter the number to test:
123
Reverse of number: 123 is 321
The number entered is not a palindrome.
Hope this helps you
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.