java - 为什么它会跳过我的 if-else 语句的 else 部分?

标签 java if-statement

它一直跳过我语句的 else 部分。如果不满足所有其他限制,我只希望它打印出无效行。

import java.util.Scanner;
public class Program_3
{
   public static void main(String[] args)
   {
      Scanner input = new Scanner(System.in);
      System.out.print("Enter a password: ");
      String str = input.nextLine();
      boolean lowerCase = false;
      boolean upperCase = false;
      boolean number = false;
      char y;
      for (int i = 0; i < str.length(); i++)
      {
         y = str.charAt(i);
         if(Character.isUpperCase(y))
         {
            upperCase = true;
         }
         else if(Character.isDigit(y))
         {
            number = true;
         }
         else if(Character.isLowerCase(y))
         {
            lowerCase = true;
         }
      }
      if (lowerCase == true)
      {
         if (upperCase == true)
         {
            if (number == true)
            {
               if (str.length() >= 8)
               {
                  System.out.println("Verdict:\t Valid");
               }
            }
         }
      }
      else
         System.out.println("Verdict:\t Invalid");
   }
}

为什么不满足所有 ifs 时,它会跳过而不打印无效行?

最佳答案

您代码中的else 仅与最外层 if 相关。 所以它只会在 lowerCase == false 时执行。

要修复此逻辑,请将所有三个条件组合在一个 if 中,即:

  if (lowerCase == true && upperCase == true && number == true && str.length() >= 8)
  {
      System.out.println("Verdict:\t Valid");
  }
  else
     System.out.println("Verdict:\t Invalid");

旁注, boolean 值不需要与 true 进行显式比较,因此您可以将其写得更短:

      if (lowerCase && upperCase && number && str.length() >= 8)

关于java - 为什么它会跳过我的 if-else 语句的 else 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069809/

相关文章:

javascript - 代码似乎正在分配,而它应该只是读取值

java - 我遇到前导零问题

ruby - 与伪造的 `if` block 内的赋值操作混淆

java - 这是如何编写此 <class name> <object name > = new constructor name 的正确方法?

java - SQLException :class org. apache.commons.dbutils.BeanProcessor(在模块commons.dbutils中)无法访问类Zhang,因为模块BeanListHandlerDemo

java - 如何在正则表达式中表示固定数量的重复?

c# - 与枚举相比,如果语句始终为真

css - Sass 中的 If/Else 语句根据列表中的元素数更改 css

java - 使用java从Oauth2 Rest api获取访问 token

java - 如何使用 Rally API 通过 Java 客户端获取子用户故事?