Javaプログラミング学習サイト ゆるゆるプログラミング

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文を使うプログラムを紹介
繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

条件による処理の分岐に使用するif文について解説-画像

if文

条件による処理の分岐に使用するif文について解説

■新着情報

2021.09.24 配列の値が全て同じか? 全ての配列値の一致確認

■広告

Topへ