2016-04-19 95 views
0

我知道基本的if語句結構,但是這讓我困惑如果代碼結構

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

    handleName = handle; 
} 

當handle.length()比10大它返回值,是不是應該是返回值當handle.length()小於10?

爲什麼這個if語句恰恰相反?

if(false){ //do stuff; } 

凡if語句應該是

if(true){ //do stuff; } 

很抱歉的模糊解釋,英語不是我的母語。 任何幫助將不勝感激! 謝謝!

+6

你的方法有**無效**的返回類型,所以它不是在任何情況下返回任何東西。它有條件地更新'handleName'。 – azurefrog

回答

4

它當handle.length()是大於10

不,它不需要返回值。它從不返回任何值,該方法的類型爲void。如果名稱長度不少於10個字符(如果名稱長度小於10個字符,則不設置),它會執行設置handleName實例字段。

,是不是應該在handle.length()小於10時返回值?

沒有,if清楚地寫着「如果手柄的長度小於10,回報」,這就是它集handleName之前。 return立即離開該功能,繞過可能遵循的任何代碼。

爲什麼這個if語句恰恰相反?

if(false){ //do stuff; } 

因爲在那種情況下,所述邏輯if塊;在你的第一個例子中,之後的if阻止了return s(繞過函數的其餘部分)。也就是說,你的第一個例子是:

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 
} 
0

它不返回任何東西(因爲void返回類型指示)。它handleNamehandle,但只有當handle.length()大於或等於10.如果handle.length()小於10,它將只從該方法return沒有做任何事情。

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; }從未「做的東西」