読者です 読者をやめる 読者になる 読者になる

No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

最小値や最大値をmax, minで表現する

アルゴリズム Java Groovy Tips

ある変数の値がマイナスを許容しないような場合があるとして、他の変数から値を受け取って設定するような場合を考えてみる。(Javaにて)

普通に書くと

int num1;
if (a < 0) {
    num1 = 0;
} else {
    num1 = a
}

こんな感じだろうか。もしくは三項演算子を利用して

int num1 = (a < 0) ? 0 : a;

となるだろう。

max, minを使うと?

そして、java.util.Math#max()を利用する書き方はこんな感じになる。

int num1 = java.util.Math.max( a, 0 );

いかがでしょうか。a0以上の場合は、aになり、0以下の場合は0になるので、目的はこれで達成できている。
ちなみに、100以下みたいな場合は逆にjava.util.Math#min()を使えばよい。

int num2 = java.util.Math.min( b, 100 );

補足

Groovyでは java.util.Collectionに#max(), #min()がGDKで付加されているので

def num1 = [a, 0].max()
def num2 = [b, 100].min()

のような感じでさらにスッキリ書ける。