嵌套if语句无字符串

时间:2019-01-17 21:22:35

标签: java nested equation palindrome

我正在做回文数序列。我已经进行了数学设置,但是在嵌套if语句仅显示一个答案时遇到了麻烦。

我试图从“ else if”中删除“ 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 :(得分:2)

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

    }
}

答案 1 :(得分:0)

这可以工作:

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

您的第二个else if语句是多余的,并且在最后一个if语句中还有一个分号。