Javaで2つの数を比較してどちらか大きな値を取得することや、最大値を求める機会は多いはずだ。
大きい値を探すには、Mathクラスのmaxメソッドを使う。
このページでは、Javaのmaxメソッドによる、「大きな値の取得」および「最大値の取得」についてお伝えしよう。参考にしてほしい。
目次
Javaによる「どちらか大きな値」の求め方
Javaで数値を比べて、より大きな値を取得するにはmaxメソッドを利用する。
書き方の基本は簡単だ。
どちらか大きな値 = Math.max(対象となる数, 対象となる別の数)
次のようになる。
Math.max(1,2) //出力2
Javaでmaxメソッドの利用方法を確認していこう。
メソッドの型による違い
maxメソッドの引数に指定したふたつの値のどちらか大きな値を求めるが、引数に指定できる値はdouble型・float型・int型・long型と種類がある。
double型
max(double a, double b)
戻り値の型 |
public static double |
内容 |
ふたつのdouble値のうち、より大きな値を戻す。 これは、結果が正の無限大により近い引数になるということだ。もし、引数が同じ値を持つならば、結果は同じ値になる。もし、どちらかの値がNaNであれば、結果はNaNになる。 数値比較演算子とは違って、このメソッドは厳密に負のゼロが正のゼロよりも小さいとみなす。もし、ひとつの引数が正のゼロで、他の引数が負のゼロならば、結果は正のゼロになる。
引数:a - 引数, b - 別の引数 戻り値:aとbのうち、より大きな値 |
float型
max(float a, float b)
戻り値の型 |
public static float |
内容 |
ふたつのfloat値のうち、より大きな値を戻す。
後はdouble型と同じだ。 |
int型
max(int a, int b)
戻り値の型 |
public static int |
内容 |
ふたつのint値のうち、より大きな値を戻す。 これは、結果がInteger.MAX_VALUEにより近い引数になるということだ。もし、引数が同じ値を持つならば、結果は同じ値になる。
引数:a - 引数, b - 別の引数 戻り値:aとbのうち、より大きな値 |
long型
max(long a, long b)
戻り値の型 |
public static long |
内容 |
ふたつのlong値のうち、より大きな値を戻す。 これは、結果がLong.MAX_VALUE.により近い引数になるということだ。 後はint型と同じだ。 |
Javaでどちらか大きな値を求めるサンプルプログラム
それでは実際にサンプルプログラムを確認してみよう。
double型
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class MaxDouble { public static void main(String[] args) { double positiveValue = 123.45;//[1] double positiveZero = 0.0;//[2] double negativeZero = - 0.0;//[3] double negativeValue = -123.45;//[4] double nanValue = Double.NaN;//[5] System.out.println("[6] 正のゼロ vs 正の値 : " + positiveValue + " -> "+ Math.max(positiveZero, positiveValue)); System.out.println("[7] 正のゼロ vs 正のゼロ: " + positiveZero + " -> "+ Math.max(positiveZero, positiveZero)); System.out.println("[8] 正のゼロ vs 負のゼロ: " + negativeZero + " -> " + Math.max(positiveZero, negativeZero)); System.out.println("[9] 正のゼロ vs 負の値: " + negativeValue + " -> " + Math.max(positiveZero, negativeValue)); System.out.println("[10] 正のゼロ vs NaN(数値でない値) : " + nanValue + " -> " + Math.max(positiveZero, nanValue)); } } |
実行結果
1 2 3 4 5 |
[6] 正のゼロ vs 正の値 : 123.45 -> 123.45 [7] 正のゼロ vs 正のゼロ: 0.0 -> 0.0 [8] 正のゼロ vs 負のゼロ: -0.0 -> 0.0 [9] 正のゼロ vs 負の値: -123.45 -> 0.0 [10] 正のゼロ vs NaN(数値でない値) : NaN -> NaN |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしていこう。
このプログラムは、扱うことのできる様々な値を持つ変数の比較からより大きな値を求めいている。
- [1] 正の値を変数:positiveValueに設定する。
- [2] 正のゼロを変数:positiveZeroに設定する。
- [3] 負のゼロを変数:negativeZeroに設定する。
- [4] 負の値を変数:negativeValueに設定する。
- [5] NaNを変数:nanValueに設定する。
出力は次の通りだ。
- [6] 正のゼロとpositiveValueのどちらか大きな値を表示する。
- [7] 正のゼロとnegativeZeroのどちらか大きな値を表示する。
- [8] 正のゼロとpositiveInfinitのどちらか大きな値を表示する。
- [9] 正のゼロとnegativeValueのどちらか大きな値を表示する。
- [10] 正のゼロとnanValueを引数とするmax()メソッドの戻り値を表示する。
int型
サンプルコード
1 2 3 4 5 6 7 8 9 |
public class MaxInt { public static void main(String[] args) { int positiveValue = 123;//[1] int negativeValue = -123;//[2] System.out.println("[3] 異なる値 : "+ Math.max(positiveValue, negativeValue)); System.out.println("[4] 同じ値: " + Math.max(negativeValue, negativeValue)); } } |
実行結果
1 2 |
[3] 異なる値 : 123 [4] 同じ値: -123 |
サンプルプログラムの説明
プログラムの解説をしていこう。
このプログラムは、異なる値を持つ変数の比較と同じ値を持つ変数の比較からより大きな値を求めいている。
- [1] 正の値を変数:positiveValueに設定する。
- [2] 負の値を変数:negativeValueに設定する。
- [3] 異なる値、positiveValueとnegativeValueのどちらか大きな値を表示する。
- [4] 同じ値、negativeValueとnegativeValueのどちらか大きな値を表示する。
Javaで最大値の求め方
Javaで最大値を求めるためには、次のようにmaxメソッドをループで回していく。サンプルコードを確認してみてほしい。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 |
public class FindMaximumValue { public static void main(String[] args) { int values[] = {3, 2, 5, 0, -3};//[1] int max = values[0];//[2] for (int index = 1; index < values.length; index ++) {//[3] max = Math.max(max, values[index]);//[4] } System.out.println("[5] 最大値 : "+ max); } }} |
実行結果
1 |
[5] 最大値 : 5 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
このプログラムは、配列に設定したいくつかの数値の中からmax関数を使って最大値を探している。
- [1] 配列:valuesに数値を設定する。
- [2] maxを定義し、初期値に配列:valuesの最初の配列の値を設定する。
- [3] ループにより変数:indexを配列の2番目から最後までインクリメントする。
- [4] maxメソッドを使って、変数:maxとindexが示す配列のより大きいほうの値をmaxに設定する。
- [5] 最大値として変数:maxを表示する。
配列をオブジェクトに変えて、java.util.Collections.maxメソッドを使えば、ループを回す必要がなくなるが、いかんせんあまり利用されていない。しかし、これくらいは知っておくといいだろう。
まとめ
このページでは、JavaでのMathクラスのmaxメソッドによる大きな値の取得と最大値の取得についてお伝えした。
これらはプログラムを組む上で、よく登場するものだ。ぜひ理解をしておこう。