2021/09/24 公開
・配列の値が全て同じか?
配列に格納されている値が全部同じであるかを調べるプログラムを紹介します。
例えば、配列の値が1種類(全て7)の場合、全ての値が同じである(true)と判定します。
7, 7, 7, 7, 7, 7
以下のように、配列の値が1種類でないものは、全ての値が同じではない(false)と判定します。
7, 7, 7, 4, 7, 7
ここからは、配列の値が同じかどうかを判定する処理を説明していきます。
まず、配列の要素数が1未満の場合は値が存在しないので、falseと判定します。ここでは、値が無い場合の判定結果をfalseとしていますが、作成するプログラムの仕様によってtrueにしてもよいです。
次に、配列の要素数が1の場合はtrueと判定します。これは、値が1つなので全ての値が同じとなります。
最後に、配列の要素数が2以上の場合です。これは、配列の先頭の値とそれ以降の値が同じかを比較していき、値が違う場合、falseと判定します。先頭の値と違う値が無かった場合、trueと判定します。
AllEqual1.java ← クリックしてダウンロードページに移動
001: public class AllEqual1 { 002: // 配列の全ての値が同じかを調べるメソッド 003: public static boolean isEqual( int[] ary ) 004: { 005: // 配列がnullの場合、nullを戻す 006: if ( null == ary ) return false; 007: 008: // 要素数が1未満の場合、falseを戻す 009: if ( 1 > ary.length ) return false; 010: 011: // 要素数が1の場合、trueを戻す 012: if ( 1 == ary.length ) return true; 013: 014: // 配列の先頭の値ary[0]と違う値が配列に存在すればfalseを戻す 015: for ( int i = 1; i < ary.length; i++ ) { 016: if ( ary[ 0 ] != ary[ i ] ) return false; 017: } 018: return true; 019: } 020: 021: 022: // メイン 023: public static void main( String[] args ) { 024: // 配列を作成 025: int[] ary1 = { 1, 2, 3, 4, 5 }; 026: int[] ary2 = { 5, 5, 5, 5, 5 }; 027: 028: // 配列ary1の値が全て同じかをチェック 029: if ( isEqual( ary1 ) ) 030: System.out.println( "ary1の値は全て同じ" ); 031: else 032: System.out.println( "ary1の値は全て同じではない" ); 033: 034: // 配列ary2の値が全て同じかをチェック 035: if ( isEqual( ary2 ) ) 036: System.out.println( "ary2の値は全て同じ" ); 037: else 038: System.out.println( "ary2の値は全て同じではない" ); 039: } 040: }
AllEqual1の出力結果
ary1の値は全て同じではない ary2の値は全て同じ
ここからは、配列の値が全て同じかを判定するメソッドについて解説します。
002: // 配列の全ての値が同じかを調べるメソッド 003: public static boolean isEqual( int[] ary ) 004: {
配列の値が全て同じかを判定するメソッドisEqualを定義しています。引数にint型の配列aryを渡します。
全ての値が同じ場合true、同じでない場合falseを戻します。
005: // 配列がnullの場合、nullを戻す 006: if ( null == ary ) return false;
配列がnullの場合、return文でfalseを戻しています。
008: // 要素数が1未満の場合、falseを戻す 009: if ( 1 > ary.length ) return false;
配列の要素数が1未満の場合、return文でfalseを戻しています。
011: // 要素数が1の場合、trueを戻す 012: if ( 1 == ary.length ) return true;
配列の要素数が1の場合、return文でtrueを戻しています。
014: // 配列の先頭の値ary[0]と違う値が配列に存在すればfalseを戻す 015: for ( int i = 1; i < ary.length; i++ ) {
for文で配列の要素の2番目(i=1)から配列の最後の添え字までのループを作成しています。
016: if ( ary[ 0 ] != ary[ i ] ) return false;
配列の先頭の値ary[0]と、先頭以降の値[i]をif文で比較して、値が一致しなければreturn文でfalseを返し、メソッドを抜けます。
018: return true;
配列の先頭の値ary[0]と違う値が配列aryにない場合は、for文を抜けてこのreturn文に到達します。全てが同じ値であったので、このreturn文でtrueを戻します。
以上です。
■関連コンテンツ
Javaの配列 | 同じ型の変数をまとめた配列について解説 |
for文を使うプログラム | for文を使うプログラムを紹介 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告
