もちろん、ヴァーランの答えは正しいです。さらに、私はいくつかのコメントを詳しく説明し、問題をはるかに単純で間違いのないようにする別のアプローチを示したいと思います。
問題文を読んでいるときに、いくつかの条件が満たされている場合に値を返し、そうでない場合は0
を返すことがわかります。したがって、デフォルト値0
で結果を初期化し、条件が満たされた場合に結果を変更してから結果を返すことができます。そうすれば、コードを以下のように減らすことができます:
public int max1020(int a, int b) {
int result = 0;
if (a >= 10 && a <= 20) result = a;
if (b >= 10 && b <= 20 && b > result) result = b;
return result;
}
もっと簡単にすることはできません。 (あなたは、コメントしてくださいすることができた場合でも、私はKISSが大好き!:))
は、このソリューションはわずか異なる結果を生成し、a
とb
の両方が範囲とa=b
であるならば、それはa
を返します。 Varunの答えに対するコメントでも示されているように、この問題が起こるのであれば、問題のステートメントは本当に明確ではありません。偶然(またはそうでない)Codingbatはその条件をチェックしません。この場合、サイト上で提案されているソリューションもa
を返します。
あなたはそれが0
ときa=b
を返さなければならないと思うなら、それはインデントについてTJCrowderさんのコメントを説明するために:)
public int max1020(int a, int b) {
int result = 0;
if (a != b) {
if (a >= 10 && a <= 20) result = a;
if (b >= 10 && b <= 20 && b > result) result = b;
}
return result;
}
まだかなりシンプル、調整するのは非常に簡単です:あなたがのボディを置く場合if
ステートメントは、次の行に、中括弧を使用し、行をインデントする必要があります。それ以外の場合は、それを誤読するのが簡単すぎる、またはコードを変更したときに間違いを起こすことがあります。
// this can be error prone and harder to read,
// especially if you have multiple if statements,
// or add a statement to the body of the if statement in the future
// (shouldn't do this)
if (condition)
statement;
// Personally I think this is totally fine for a simple statement.
// But I know not everybody will agree
if (condition) statement;
// Usually, you'll see this formatting.
// Even without reading anything, the formatting makes it instantly clear
// which statements belong to the body of the if
if (condition) {
statement;
}
サイドノート:あなたのコード内のelse
文は最後if
からのみを属します。あなたの書式設定は、それらの間に空白行を入れないことで明確にすることができます。あなたのコードで
if (condition) statement;
else statement;
if (condition) {
statement;
} else {
statement;
}
else
文では、あなたは単にreturn 0;
最後の行に、実際に廃止された可能性があります。
else if
を使用できるというVarunの提案が正しいです。理論的には、最初のif
ステートメントの条件が真である場合、else if
を使用すると、コードはもう一方のif
のテストをスキップし、少し効率的になります。さらに、前のif
ステートメントが偽であった場合にのみ、次のif
ステートメントに到達することが示されます。
実際には、条件がtrue
で、その後のif
ステートメントに決して到達しない場合、メソッドは終了し値を返すので、実際にはコードでは問題にはなりません。
申し訳ありません、そのJava! –
「a」が最初に範囲内にあるかどうかをチェックするだけでコードを単純化してみませんか? 'b 'を含む同値は、次に最大のものを見つける –
' && 'は' || 'と同じ優先順位を持ちます。したがって、if節は左から右へ読み込まれます。あなたは "内部"句の周りにかっこを使用する必要があります。 – Evert