Search code examples
javanestedequationpalindrome

Nesting if statements no strings


I am doing a Palindrome number sequence. I've got the math set up, but I'm having trouble nesting my if statements only showing one answer.

I've attempted to remove the 'if' from the 'else if' but then java doesn't recognize. The output doesn't provide the "Not 5 digits" and when I enter 5 digits that are a Palindrome it sends an output both True and False instead of just true. However it works perfect for a false 5 digit number input. Can I have some help on how to nest appropriately is what I'm asking for or an example of a good explanation to help me achieve the results as I've been to quite a few sites, but most are too simple and lack examples to compare.

import java.util.Scanner;
public class Palindrome
{
   public static void main(String args[])
   {
    Scanner input = new Scanner(System.in);
   System.out.print ("Enter 5-digit integer value: ");
   int userNumber = input.nextInt();
    System.out.println("Input value: " + "\t" + userNumber);

      //User input incorrect amount of digits
      if (userNumber >= 100000 && userNumber <= 9999) 
      {
      System.out.println("Not 5 digits.");
      }   
         else if(userNumber < 100000 && userNumber > 9999)
             {
            int Number5 = (userNumber/10000) % 10;
            int Number4 = (userNumber/1000) % 10;
            int Number3 = (userNumber /100) % 10;
            int Number2 = (userNumber/10) % 10;
            int Number1 = userNumber % 10;

            //Conditions are met for Palidrome Number
              if(Number1 == Number5 && Number2 == Number4)
                {
                  System.out.println("Judgement: " + "\t" + "\t" + "True");
               }
               //Conditions are not met for Palidrome Number
               else if (Number1 != Number5 || Number2 !=Number4);
                     {
                  System.out.println("Judgement: " + "\t" + "\t" + "False");
                   }     
     }
   }
}

The results should show true, false, or not 5 digits


Solution

  • This can work:

    import java.util.Scanner;
    import java.lang.*;
    public class Main
    {
       public static void main(String args[])
       {
        Scanner input = new Scanner(System.in);
       System.out.print ("Enter 5-digit integer value: ");
       String userNumber = input.next();
        System.out.println("Input value: " + "\t" + userNumber);
    
          //User input incorrect amount of digits
          if (userNumber.length()!=5) 
          {
          System.out.println("Not 5 digits.");
          }   
             else{
                //Conditions are met for Palidrome Number
                  if(new StringBuilder(userNumber).reverse().toString().equals(userNumber))
                    {
                      System.out.println("Judgement: " + "\t" + "\t" + "True");
                   }
                   //Conditions are not met for Palidrome Number
                   else
                         {
                      System.out.println("Judgement: " + "\t" + "\t" + "False");
                       }     
         }
       }
    }
    

    Your 2nd else if statement is redundant, and you have an extra semicolon in your last if statement.