2016.01.14
Javaプログラミング
配列
配列とは、同じ型の変数(データ)を複数個まとめて管理するデータの持ち方です。配列の値は順番に並べられていて、特定の値を取り出すことができます。
例えば、100個の値の平均値を計算する場合、違う名前で宣言した100個の変数に代入した値を合計し、その合計値を100で割ることで平均値を計算することができます。実際にこのようなプログラムを作成するときにデータの個数が多い場合は、それら全ての変数を宣言するのは事実上不可能です。このような複数のデータを一度に処理するとき便利なのが配列です。以下の図は、n個の変数をまとめた配列aをイメージしたもので、添え字(インデックス)という番号に対応した値の取得・代入が出来ることを表しています。配列名aの後ろに[添え字]を付けることで、その値にアクセスすることが出来ます。添え字は0から開始なので、1番目のデータはa[0]に、n番目のデータはa[n-1]に格納されています。
それでは、配列の使い方について説明します。
配列は、配列名とデータ型を使って、以下のように宣言します。
データ型[] 配列名; または データ型 配列名[];
配列を宣言しただけでは使えません。要素数(データの個数)をnew演算子で指定し、配列として扱えるデータを作成します。
配列名 = new データ型[ 要素数 ];
int[] a; a = new int[ 100 ];
Javaソースコード
Mean1.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
public class Mean1 { public static void main( String[] args ) { // 配列aを宣言 int[] a; // 要素数10を設定 a = new int[ 10 ]; // 値を代入 a[ 0 ] = 18; a[ 1 ] = 73; a[ 2 ] = 54; a[ 3 ] = 6; a[ 4 ] = 12; a[ 5 ] = 17; a[ 6 ] = 77; a[ 7 ] = 8; a[ 8 ] = 33; a[ 9 ] = 2; // 合計値を計算 int total = 0; for ( int i = 0; i < a.length; ++ i ) { // 添え字に変数iを使用 total += a[ i ]; } // 平均値を計算 double mean = (double)total / (double)a.length; // 結果を表示 System.out.println( "平均値は" + mean ); } }
実行結果
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Mean1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Mean1.java
実行
C:\talavax\javasample>java Mean1
出力結果
平均値は30.0
Javaソースコードの解説
ここからソースコードを順番に解説していきます。
001
public class Mean1 {
クラス名を、Mean1としています。
003 004
// 配列aを宣言 int[] a;
int型の配列aを宣言しています。
006 007
// 要素数10を設定 a = new int[ 10 ];
10個の要素数を指定しています。
009 010 011 012 013 014 015 016 017 018 019
// 値を代入
a[ 0 ] = 18;
a[ 1 ] = 73;
a[ 2 ] = 54;
a[ 3 ] = 6;
a[ 4 ] = 12;
a[ 5 ] = 17;
a[ 6 ] = 77;
a[ 7 ] = 8;
a[ 8 ] = 33;
a[ 9 ] = 2;
配列a[0]~a[9]に値を代入しています。
021 022 023 024 025 026 027
// 合計値を計算 int total = 0; for ( int i = 0; i < a.length; ++ i ) { // 添え字に変数iを使用 total += a[ i ]; }
配列で確保されている要素の数を調べたい場合、配列名.lengthと記述することで取得することができます。
029 030
// 平均値を計算 double mean = (double)total / (double)a.length;
合計値totalを配列の要素数(a.length)で割り、平均値を格納する変数meanに代入しています。このとき合計値を配列数で割った値が整数にならないことがあるので、double型に型キャストして計算しています。
032 033
// 結果を表示 System.out.println( "平均値は" + mean );
平均値を表示しています。これで終了です。
次に上記ソースコードの配列へのデータ代入方法だけを変更したものを紹介します。
Javaソースコードの変更
以下は、配列に値を格納する部分を変更したソースコードです。
Mean2.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020
public class Mean2 { public static void main( String[] args ) { // 配列aを宣言 int[] a = { 18, 73, 54, 6, 12, 17, 77, 8, 33, 2 }; // 合計値を計算 int total = 0; for ( int i = 0; i < a.length; ++ i ) { // 添え字に変数iを使用 total += a[ i ]; } // 平均値を計算 double mean = (double)total / (double)a.length; // 結果を表示 System.out.println( "平均値は" + mean ); } }
以下が変更部分です。
003 004
// 配列aを宣言 int[] a = { 18, 73, 54, 6, 12, 17, 77, 8, 33, 2 };
int型の配列aを宣言して、さらに値を代入しています。代入した値の数が配列の要素数になります。
詳細は以下を参考にしてください。
以上です。