Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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