如果代码结构

时间:2016-04-19 17:03:12

标签: java if-statement

我知道基本的if语句结构,但这让我感到困惑

echo $scheckrow['artNumber'];

当handle.length()大于10时返回值,当handle.length()小于10时,是不是应该返回值?

为什么这个if语句恰恰相反?

public void setHandleName(String handle){
    if(handle.length() < 10){
        return;
    }

    handleName = handle;
}

if语句应该是

if(false){ //do stuff; }

对于模糊的解释感到抱歉,英语不是我的母语。 任何帮助将不胜感激! 谢谢!

3 个答案:

答案 0 :(得分:4)

  

当handle.length()大于10

时返回值

不,不。它永远不会返回任何值,该方法的类型为void。如果名称长度至少为10个字符,则设置 handleName实例字段(如果名称长度少于10个字符,则不设置)。

  

,当handle.length()小于10时,不应该返回值吗?

不,if清楚地说“如果句柄长度小于10,则返回”并且之前设置handleNamereturn立即离开了该功能,绕过了可能跟随的任何代码。

  

为什么这个if语句恰恰相反?

if(false){ //do stuff; }

因为在这种情况下,逻辑是在<{em} if块内;在你的第一个例子中,if块之后 return提前(绕过函数的其余部分)。也就是说,你的第一个例子是:

if (!condition) {
    return;
}
doSomething();

但你的第二个例子是

if (condition) {
    doSomething();
}

以下是您的第一个示例的注释版本:

public void setHandleName(String handle){ // Accept a `handle` string parameter
    if(handle.length() < 10){             // If the length of `handle` is less
                                          // than 10, enter the block
        return;                           // Leave this method immediately, without
                                          // doing anything else
    }                                     // This is the end of the conditional bit

    handleName = handle;                  // Set `handleName` to `handle`
}

因此,如果我们进入if块,我们将返回,并且永远不会到达handleName = handle;行,因此我们从未设置它。如果我们进入if块,我们不会提前返回,所以我们设置它。

我们可以(也可能应该)重写setHandleName以使用后面示例中的结构:

public void setHandleName(String handle){ // Accept a `handle` string parameter
    if(handle.length() >= 10){            // If `handle`'s length is 10 or higher
        handleName = handle;              // Set `handleName` to `handle`
    }                                     // This is the end of the conditional bit
}

答案 1 :(得分:0)

它不会返回任何内容(因为void返回类型表示)。它设置 handleNamehandle的值,但仅当handle.length()大于或等于10.如果handle.length()小于10,只需return来自该方法而不再做任何其他事情。

答案 2 :(得分:0)

这是否使代码实际上更清楚?

public void setHandleName(String handle){
    if(handle.length() >= 10){
        handleName = handle;
    }
    // otherwise handleName is not set, and the method exits
    // nothing is returned because the method is 'void'
}

请注意if(false){ //do stuff; } 永远不会&#34;做东西&#34;