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と判定します。

Javaソースコード

以下は、配列の値が全て同じかを判定するソースコード例です。

AllEqual1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
public class AllEqual1 {
	// 配列の全ての値が同じかを調べるメソッド
	public static boolean isEqual( int[] ary )
	{
		// 配列がnullの場合、nullを戻す
		if ( null == ary ) return false;

		// 要素数が1未満の場合、falseを戻す
		if ( 1 > ary.length ) return false;

		// 要素数が1の場合、trueを戻す
		if ( 1 == ary.length ) return true;

		// 配列の先頭の値ary[0]と違う値が配列に存在すればfalseを戻す
		for ( int i = 1; i < ary.length; i++ ) {
			if ( ary[ 0 ] != ary[ i ] ) return false;
		}
		return true;
	}


	// メイン
	public static void main( String[] args ) {
		// 配列を作成
		int[] ary1 = { 1, 2, 3, 4, 5 };
		int[] ary2 = { 5, 5, 5, 5, 5 };

		// 配列ary1の値が全て同じかをチェック
		if ( isEqual( ary1 ) )
			System.out.println( "ary1の値は全て同じ" );
		else
			System.out.println( "ary1の値は全て同じではない" );

		// 配列ary2の値が全て同じかをチェック
		if ( isEqual( ary2 ) )
			System.out.println( "ary2の値は全て同じ" );
		else
			System.out.println( "ary2の値は全て同じではない" );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis AllEqual1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac AllEqual1.java

実行

C:\talavax\javasample>java AllEqual1

実行結果

ary1の値は全て同じではない
ary2の値は全て同じ

Javaソースコードの解説

ここからは、配列の値が全て同じかを判定するメソッドについて解説します。

002
003
004
	// 配列の全ての値が同じかを調べるメソッド
	public static boolean isEqual( int[] ary )
	{

配列の値が全て同じかを判定するメソッドisEqualを定義しています。引数int型配列aryを渡します。

全ての値が同じ場合true、同じでない場合falseを戻します。

005
006
		// 配列がnullの場合、nullを戻す
		if ( null == ary ) return false;

配列nullの場合、return文falseを戻しています。

008
009
		// 要素数が1未満の場合、falseを戻す
		if ( 1 > ary.length ) return false;

配列要素数が1未満の場合、return文falseを戻しています。

011
012
		// 要素数が1の場合、trueを戻す
		if ( 1 == ary.length ) return true;

配列要素数が1の場合、return文trueを戻しています。

014
015
		// 配列の先頭の値ary[0]と違う値が配列に存在すればfalseを戻す
		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を戻します。

以上です。

関連コンテンツ

同じ型の変数(データ)を複数個まとめて管理するデータの持ちかたがあります。これが配列です。くわしくは、記事をご覧ください。

2016.01.14

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

処理を繰り返すために使用するfor文について解説しています。

2020.03.23

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

繰り返し処理の作り方を解説しています。

2016.03.02

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告