2016-04-19 10 views
0

が、私は基本的なif文の構造を知っているが、これは私にコード構造

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

    handleName = handle; 
} 

handle.length()が10よりも大きい場合には、値を返すが、混乱した場合には、値を返すことになっていませんhandle.length()が10より小さい場合?

なぜこのif文は反対ですか?文は英語が母国語でない漠然とした説明、申し訳ありません

if(true){ //do stuff; } 

するかどう

if(false){ //do stuff; } 

。 ご協力いただければ幸いです! ありがとう!

+6

if(false){ //do stuff; }は決して「ものもしない」ということに注意してくださいあなたの方法は、** **ボイドの戻り値の型を持っているので、それがどのような状況の下で、何も返さないです。条件付きで 'handleName'を更新しています。 – azurefrog

答えて

4

handle.lengthは()それはない10

ないよりも大きいとき。それは値を返します。値が返されることはありません。メソッドのタイプはvoidです。 handleNameインスタンスフィールドの名前が10文字以上であれば設定します(名前が10文字未満の場合は設定しません)。

は、handle.length()が10未満のときに値を返すとは限りませんか? 「ハンドルの長さは、10未満である場合、戻り」と、それはhandleNameを設定前に、それはだ

いいえ、ifは明確に述べています。 returnはすぐに機能を残し、続くコードをバイパスします。

なぜこのif文は反対ですか?

if(false){ //do stuff; } 

その場合には、ロジックは、ifブロックであるからです。あなたの最初の例では、の後にifブロックがあり、それは早く(機能の残りを迂回して)です。それは、あなたの最初の例である:

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

が、あなたの第二の例は、

if (condition) { 
    doSomething(); 
} 

でここにあなたの最初の例の注釈付きバージョンです:私たちはifに行けば

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

だからブロックすると返され、決して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のように返されません。 の値をhandleNameからhandleに設定しますが、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' 
}