ゆるゆるプログラミング

・Javaの配列

配列とは、同じ型の変数(データ)を複数個まとめて管理するデータの持ち方です。配列の値は順番に並べられていて、特定の値を取り出すことができます。

例えば100個の値の平均値を計算する場合、違う名前で宣言した100個の変数に代入した値を合計し、その合計値を100で割ることで平均値を計算することができます。実際にこのようなプログラムを作成するときにデータの個数が多い場合は、それら全ての変数を宣言するのは事実上不可能です。このような複数のデータを一度に処理するとき便利なのが配列です。以下の図は、n個の変数をまとめた配列aをイメージしたもので、添え字(インデックス)という番号に対応した値の取得・代入が出来ることを表しています。配列名aの後ろに[添え字]を付けることで、その値にアクセスすることが出来ます。添え字は0から開始なので、1番目のデータはa[0]に、n番目のデータはa[n-1]に格納されています。

配列

それでは、配列の使い方について説明します。

配列は、配列名とデータ型を使って、以下のように宣言します。

データ型[] 配列名;

  または

データ型 配列名[];

配列を宣言しただけでは使えません。要素数(データの個数)をnew演算子で指定し、配列として扱えるデータを作成します。

配列名 = new データ型[ 要素数 ];

上の図のn=100、変数の型をintとした場合、以下のソースコードとなります。

int[] a;

a = new int[ 100 ];

次に配列を使って平均値を計算するプログラムを解説します。以下がそのJavaソースコードと実行結果です。

Mean1.java ← クリックしてダウンロードページに移動
001:    public class Mean1 {
002:    	public static void main( String[] args ) {
003:    		// 配列aを宣言
004:    		int[] a;
005:    
006:    		// 要素数10を設定
007:    		a = new int[ 10 ];
008:    
009:    		// 値を代入
010:    		a[ 0 ] = 18;
011:    		a[ 1 ] = 73;
012:    		a[ 2 ] = 54;
013:    		a[ 3 ] =  6;
014:    		a[ 4 ] = 12;
015:    		a[ 5 ] = 17;
016:    		a[ 6 ] = 77;
017:    		a[ 7 ] =  8;
018:    		a[ 8 ] = 33;
019:    		a[ 9 ] =  2;
020:    
021:    		// 合計値を計算
022:    		int total = 0;
023:    
024:    		for ( int i = 0; i < a.length; ++ i ) {
025:    			// 添え字に変数iを使用
026:    			total += a[ i ];
027:    		}
028:    
029:    		// 平均値を計算
030:    		double mean = (double)total / (double)a.length;
031:    
032:    		// 結果を表示
033:    		System.out.println( "平均値は" + mean );
034:    	}
035:    }

Mean1.javaの出力結果

平均値は30.0

ここからソースコードを順番に解説していきます。

001:    public class Mean1 {

クラス名を、Mean1としています。

003:    		// 配列aを宣言
004:    		int[] a;

int型配列aを宣言しています。

006:    		// 要素数10を設定
007:    		a = new int[ 10 ];

10個の要素数を指定しています。

009:    		// 値を代入
010:    		a[ 0 ] = 18;
011:    		a[ 1 ] = 73;
012:    		a[ 2 ] = 54;
013:    		a[ 3 ] =  6;
014:    		a[ 4 ] = 12;
015:    		a[ 5 ] = 17;
016:    		a[ 6 ] = 77;
017:    		a[ 7 ] =  8;
018:    		a[ 8 ] = 33;
019:    		a[ 9 ] =  2;

配列a[0]~a[9]に値を代入しています。

021:    		// 合計値を計算
022:    		int total = 0;
023:    
024:    		for ( int i = 0; i < a.length; ++ i ) {
025:    			// 添え字に変数iを使用
026:    			total += a[ i ];
027:    		}

for文でiを0~9まで1ずつ変化させ、合計値を格納する変数totalにa[i]を足しています。a.length配列aの要素数で、この例の場合10です。

配列で確保されている要素の数を調べたい場合、配列名.lengthと記述することで取得することができます。

029:    		// 平均値を計算
030:    		double mean = (double)total / (double)a.length;

合計値totalを配列要素数(a.length)で割り、平均値を格納する変数meanに代入しています。このとき合計値を配列数で割った値が整数にならないことがあるので、double型型キャストして計算しています。

032:    		// 結果を表示
033:    		System.out.println( "平均値は" + mean );

平均値を表示しています。これで終了です。

次に上記ソースコード配列へのデータ代入方法だけを変更したものを紹介します。

Mean2.java ← クリックしてダウンロードページに移動
001:    public class Mean2 {
002:    	public static void main( String[] args ) {
003:    		// 配列aを宣言
004:    		int[] a = { 18, 73, 54, 6, 12, 17, 77, 8, 33, 2 };
005:    
006:    		// 合計値を計算
007:    		int total = 0;
008:    
009:    		for ( int i = 0; i < a.length; ++ i ) {
010:    			// 添え字に変数iを使用
011:    			total += a[ i ];
012:    		}
013:    
014:    		// 平均値を計算
015:    		double mean = (double)total / (double)a.length;
016:    
017:    		// 結果を表示
018:    		System.out.println( "平均値は" + mean );
019:    	}
020:    }

以下が変更部分です。

003:    		// 配列aを宣言
004:    		int[] a = { 18, 73, 54, 6, 12, 17, 77, 8, 33, 2 };

int型配列aを宣言して、さらに値を代入しています。代入した値の数が配列要素数になります。

ここで説明した配列は、1つの添え字でデータを管理する方法で1次元配列といいます。さらに、Javaでは2つ以上の添え字でデータを管理することができ、これを多次元配列といいます。

 詳細はここを参考にしてください。多次元配列

■配列に関係したコンテンツ

多次元配列 多次元配列について解説
配列を返すメソッド 配列を返すメソッドの作り方
Javaの変数(9) Javaで扱う変数について解説
配列の並び替え 配列をランダムに並び替える方法を解説
配列のソート 配列を昇順・降順に並び替える方法を解説
クイックソート 高速に配列に並び替える方法
配列のコピーを作る 配列のコピーを作る方法を解説
複数の値の合計と平均 配列の値の合計と平均を計算
複数の値の最小値と最大値 配列から最小値、最大値を取得
中央値(メディアン) 配列に格納されている値の中央値を求める
最頻値 配列から出現回数が最も多い値の取得
配列値の反転 配列の反転処理

■新着情報

2020.07.08 公約数 公約数
2020.07.08 最大公約数 1番大きい約数は?
2020.06.18 3つの値の最大最小 3つの値の最大/最小値
2020.06.03 円を描く(テキスト版) テキストを円を描く
2020.06.02 文字の間違い探し どの文字が違う?

■広告

フィギュア予約最大25%OFF+ポイント5%還元!ホビーサーチ

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

 

 

 

 

 

 

 

 

 

Topへ