在if语句中必须满足所有3个条件时如何返回内容

时间:2019-10-21 02:26:56

标签: java if-statement

  

弱密码是指少于八个字符的密码。中等密码定义为长度为八个或更多字符且具有数字或“其他”字符的密码。强密码定义为长度为八个或更多字符且同时具有数字和“其他”字符的密码。

当必须满足所有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;
}

3 个答案:

答案 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;

我认为您可能想了解布尔逻辑。您可能会发现orand并不意味着您认为他们所做的。在通用语言中,它们通常可以互换使用,但在布尔逻辑中,它们具有非常精确的含义。