Вложенность, если заявления нет строк - PullRequest
0 голосов
/ 18 января 2019

Я делаю последовательность номеров палиндрома. Я настроил математику, но у меня возникают проблемы с вложением операторов if, показывающих только один ответ.

Я пытался удалить «если» из «еще, если», но тогда Java не распознает. Выходные данные не содержат «Не 5 цифр», и когда я ввожу 5 цифр, которые являются палиндромом, он отправляет выходные данные как True, так и False, а не просто true. Однако он идеально подходит для ввода ложных 5-значных чисел. Могу ли я получить некоторую помощь о том, как правильно вложить, это то, о чем я прошу, или пример хорошего объяснения, чтобы помочь мне достичь результатов, так как я был на довольно многих сайтах, но большинство из них слишком просты и не имеют примеров, чтобы сравнить.

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");
                   }     
     }
   }
}

Результаты должны показывать истину, ложь или не 5 цифр

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Нет номера, который >= 100000 и <= 9999, поэтому вы никогда не увидите Не 5 цифр.
Вы должны изменить это условие на:

if (userNumber <= 9999 || userNumber > 99999)

и изменить:

else if(userNumber < 100000 && userNumber > 9999)

в простой

else

, потому что если код достигает части else, то userNumber < 100000 && userNumber > 9999 всегда равен true.
То же относится и к

else if (Number1 != Number5 || Number2 !=Number4);

(Примечание: ; в конце неверно и является источником серьезных головных болей)
который должен быть изменен на:

else

Это утверждение:

int Number3 = (userNumber / 100) % 10;

является избыточным, так как значение Number3 в этом случае бесполезно.
Поэтому ваш код должен быть упрощен так:

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);

    if (userNumber <= 9999 || userNumber > 99999) {
        System.out.println("Not 5 digits.");
    }
    else {
        int Number5 = (userNumber / 10000) % 10;
        int Number4 = (userNumber / 1000) % 10;
        int Number2 = (userNumber / 10) % 10;
        int Number1 = userNumber % 10;

        if (Number1 == Number5 && Number2 == Number4) {
            System.out.println("Judgement: " + "\t" + "\t" + "True");
        } else {
            System.out.println("Judgement: " + "\t" + "\t" + "False");
        }

    }
}
0 голосов
/ 18 января 2019

Это может работать:

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");
                   }     
     }
   }
}

Ваш 2-й оператор else if является избыточным, и у вас есть лишняя точка с запятой в последнем операторе if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...