它一直跳过我语句的 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/