Javaで配列の最大値と最小値を求める方法について現役エンジニアが解説【初心者向け】

初心者向けにJavaで配列の最大値と最小値を求める方法について解説しています。ここでは分岐のif文と繰り返しのfor文による値の比較を使った求め方を説明します。処理の順番と書き方を覚えましょう。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Javaで配列の最大値と最小値を求める方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

配列の最大値と最小値を求める方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

最大値と最小値を求める方法とは

例えば次のような配列があります。

int [] array = {1,5,10,8,9};

変数arrayの配列の最小値は1、最大値は10となりますが、Javaの標準ライブラリでは配列の最大値と最小値を求める便利な標準ライブラリ(もともと用意されているクラスやメソッド)はありません。

今回は、Javaの制御構文であるif文(分岐)とfor文(繰り返し)を活用して順番に値を比較して最も小さい値と最も大きい値を見つけてみましょう。

今回の内容は変数の宣言、代入、配列の繰り返し処理、if文と真偽値の扱いの復習にもなるのでぜひ実施してみてください。

 

最大値と最小値を計算する処理

配列を引き数、戻り値がintである、配列の最大値を計算するcalcMaxメソッドと配列の最小値を計算するcalcMinメソッドを考えます。変数arrayの配列は以下のようになっているとします。

int [] array = {1,5,10,8,9}

最大値を計算するには、配列の要素を取り出して要素同士の大小を比較していく必要があります。ポイントとしては、比較した結果、値の大きい方をintMax変数等に代入しておくことです。

int intMax = array[0]; //配列の最大値が0の場合もあるため、配列の要素の1番目で初期化すること

for(int i = 1; i < array.length; i++) { // 要素0番目のは代入済みのため1番目から開始する

    //intMaxに代入されている値と配列の要素を比較して、配列の要素のほうが大きい場合値を上書きする.
    if(intMax < array[i]) {
        intMax = array[i]
    }
}

このようにすることで、for文が一回、回るごとにintMax変数の値が最大値に更新されます。値の更新イメージとしては以下の順番になります。

intMax = 1;
intMax = 5;
intMax = 10;

変数arrayの配列の3番目の要素8と4番目の要素9は10より小さいため上書きすることはありません。結果として変数arrayの配列の最大値は10であることが計算できましたね。

同様に最小値を計算する方法は比較の部分を値が小さい場合に代入するようにすると良いですね。

int intMin = array[0]; //配列の最小値が0の場合もあるため、配列の要素の1番目で初期化すること

for(int i = 1; i < array.length; i++) { // 要素0番目のは代入済みのため1番目から開始する

    //intMinに代入されている値と配列の要素を比較して、配列の要素のほうが小さい場合値を上書きする.
    if(intMin > array[i]) {
        intMin = array[i]
    }
}

 

[PR] Javaプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

class Main {

    public static void main(String args[]) {

        int [] array = {1,5,10,8,9};

        int intMax = calcMax(array);
        int intMin = calcMin(array);

        System.out.println("最大値は" + intMax);
        System.out.println("最小値は" + intMin);
    }

    public static int calcMax(int[] array) {

        int intMax = array[0];

        for (int i = 1; i < array.length; i++ ) {
            if(intMax < array[i]) {
                intMax = array[i];
            }
        }
        return intMax;
    }

    public static int calcMin(int[] array) {

        int intMin = array[0];

        for (int i = 1; i < array.length; i++ ) {
            if(intMin > array[i]) {
                intMin = array[i];
            }
        }
        return intMin;
    }
}

実行結果

最大値は10
最小値は1

 

監修してくれたメンター

津久井日向

Web系、スマートフォンアプリ等のバックエンド開発を主担当。サーバーサイド言語として、Java,Ruby,Objective-Cを経験しています。TechAcademyではJavaコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。