弱密码是指少于八个字符的密码。中等密码定义为长度为八个或更多字符且具有数字或“其他”字符的密码。强密码定义为长度为八个或更多字符且同时具有数字和“其他”字符的密码。
当必须满足所有3个条件时,我该如何退货?我唯一的弱项就是印刷权。
public String test() {
//length is user input String which is already converted to into int
//digit and other are booleans,
if (length < 8)
return weak pass;
if ((length <=8) || (length <=8 && digit==true) || (length<=8 && other==true))
return medium pass
if (length <= 8 && digit==true && other==true)
return strong pass;
return null;
}
答案 0 :(得分:2)
应该是
public String test() {
//length is user input String which is already converted to into int
//digit and other are booleans,
if (length < 8)
return weak pass;
if (length >= 8 && digit && other)
return strong pass;
if (length >= 8 && (digit || other))
return medium pass
return null;
}
简化版
public String test() {
if (length < 8) {
return "weak";
} else {
if (digit && other) {
return "strong";
}
if (digit || other) {
return "medium";
}
}
return null;
}
更多,缩短
public String test() {
return length < 8 ? "weak" : (digit && number) ? "strong" : (digit || number) ? "medium" : null;
}
答案 1 :(得分:1)
首先将每个书面陈述翻译成逻辑陈述:
弱密码是指少于八个字符的密码。
length < 8
中级密码定义为长度为八个或更多字符且具有数字或“其他”字符的密码。
length >= 8 && (digit || other)
强密码定义为长度为八个或更多字符且同时具有数字和“其他”字符的密码。
length >= 8 && digit && other
然后考虑您要检查这些订单的顺序。首先检查最强的,然后是中等的,然后是弱的:
public String test() {
if (length >= 8 && digit && other)
return strong;
if (length >= 8 && (digit || other))
return medium;
if (length < 8)
return weak;
return null;
}
请注意在给定的约束下如何不包括一种情况:长度为8或更大且没有数字且没有“其他”字符的密码。对于这种情况,将返回null
。
答案 2 :(得分:0)
有两个问题。
"weak pass"
周围加上双引号,以此类推。 public String test(String password)
{ int length = password.length;
if (length < 8)
etc...
之后,您可以通读它。在第一个if
语句中,您要测试length是否小于8,如果返回,则返回"weak pass"
。当您到达第二个if
时,您已经知道该长度> = 8,因此您不必再进行测试。如果您想让其他开发人员更加清楚要测试的内容,可以这样做,但这不是必需的,并且可能会使您感到混乱。
因此您在此处编写了表达式((length <=8) || (length <=8 && digit) || (digit <=8 && other))
。您可以删除<
,因为它们从来都不是真的。如果小于8,则您在第一个if中已经返回了一些内容。现在,您有了(length==8 || (length ==8 && digit) || (digit <=8 && other))
我不确定您是真的digit <=8
还是length <=8
。我假设length <= 8
,所以它是(length==8 || (length == 8 && digit) || (length == 8 && other))
如果此条件length==8
的第一部分为true,则结果为true。这就是布尔包含或的工作原理。因此,这意味着不再需要第二个和第三个条件,因为只有在length != 8
时才对它们求值,在这种情况下,(length == 8 && digit)
或(length == 8 && other)
都不为真。
最后一个if
语句(length <= 8 && digit && other)
要求length <= 8
。但是,如果已经在第一个或第二个if语句中返回了值,那么最后一个if
中的测试将永远不会为真。您可以忽略它。
总而言之,您拥有的是:
if (length < 8)
return weak pass;
if (length == 8)
return medium pass
return null;
我认为您可能想了解布尔逻辑。您可能会发现or
和and
并不意味着您认为他们所做的。在通用语言中,它们通常可以互换使用,但在布尔逻辑中,它们具有非常精确的含义。