2016.01.14

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ソースコード

次に、配列を使って平均値を計算するプログラムを解説します。以下がその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 ];
		}

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 );

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

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

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を宣言して、さらに値を代入しています。代入した値の数が配列要素数になります。

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

詳細は以下を参考にしてください。

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

2019.03.15

以上です。

関連コンテンツ

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

2022.09.10

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

2020.03.23

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

2021.05.18

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

2020.03.23

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

2022.07.07

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

2015.11.29

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

2022.10.17

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

2020.03.23

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2022.10.25

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

2021.05.18

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

2016.12.16

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

2022.07.27

IT分野でアクセスするってどういう意味?インターネットにアクセス、データベースにアクセスのように使われますが・・・

2022.07.14

複数の数値の合計値と平均値を計算するプログラムをJavaのソースコードを使って解説しています。

2020.03.23

Javaで扱うデータ型について説明しています。

2020.03.23

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

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

2020.03.23

for文で変数名iがよく使われる理由について説明しています。興味のある方は是非。

2022.08.29

データの型を変換する方法を詳しく解説しています。例)int型 → long型

2015.11.01

自然数と整数って何が違う?

2020.03.23

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

2019.03.15

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

2020.03.23

配列をそのままコピーするメソッドの作り方をソースコードを使って詳しく解説しています。

2019.01.03

byte型配列をそのままコピーするメソッドの作り方をソースコードを使って詳しく解説しています。

2023.06.07

double型配列をそのままコピーするメソッドの作り方をソースコードを使って詳しく解説しています。

2023.06.07

float型配列をそのままコピーするメソッドの作り方をソースコードを使って詳しく解説しています。

2023.06.07

long型配列をそのままコピーするメソッドの作り方をソースコードを使って詳しく解説しています。

2023.06.07

配列に格納されている値の順番を逆にする反転処理を行うプログラムを紹介しています。Javaのソースコードを使って詳しく解説しています。

2019.09.03

ソート(並び替え)アルゴリズムの1つであるバブルソート(bubble sort)について詳しく解説しています。Javaのソースコード付きです。

2023.01.13

基準とする座標に最も近い座標を複数の座標から探す方法は?

2021.03.10

色変換テーブルを利用して画像の色を変換する方法を解説しています。Javaのソースコード付きです。

2017.8.27

Javaのmainメソッドで受け取るパラメータについて解説しています。

2017.09.26

mainメソッドで受け取るパラメータの数の取得の仕方について解説しています。

2019.05.14

1から6のサイコロの目が出る確率を割り出すプログラムの作りかたを解説しています。

2020.05.07

ビッグエンディアン、リトルエンディアンって何?

2022.09.15

指定したフォルダに格納されているファイル名を配列に格納する方法を説明しています。

2016.11.23

指定したファイルの内容をbyte型の配列に格納する方法を説明しています。

2021.04.05

自然界に現れる黄金角について解説しています。興味のある方は是非ご覧ください。

2020.03.23

デザインなどに使われる最も美しい比率について解説しています。

2020.03.23

Javaで読み書きが行える画像フォーマットの種類を取得する方法を解説しています。

2022.08.03

整数型の変数に1を足すインクリメント、1つ引くデクリメントについて詳しく説明しています。

2020.03.23

2次元の配列を使った九九(くく)の表の作り方を紹介しています。

2020.01.30

最も単純な探索アルゴリズム、リニアサーチをJavaのソースコードで解説しています。

2020.03.23

トランプ(カード)を扱うクラスを紹介しています。

2019.08.05

自然界の現象に数多く出現するフィボナッチ数列のプログラムを作ってみませんか?

2017.01.23

再帰を使ったフィボナッチ数列を出力するプログラムを作ってみませんか?

2017.01.23

配列を使ったフィボナッチ数列を出力するプログラムを作ってみませんか?

2021.03.09

2つの座標の真ん中の座標の求める計算について説明しています。

2021.02.18

複数の値のうち、一番小さい値と、一番大きい値を取得する方法。

2020.03.23

配列を使って素数を判定するプログラムを紹介しています。是非、ご覧ください。

2016.02.02

二次方程式の解を求めるプログラムを作ってみませんか?

2022.10.17

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

2020.03.23

カラーの画像を、N個のグレー色(白/灰色/黒)で表現した画像に変換する方法を説明しています。

2017.11.17

トランプゲームの1つポーカーの役を判定をプログラムを作成してみませんか?。興味のある方は、ご覧ください。

2020.08.27

ソート(並び替え)アルゴリズムの1つであるクイックソートについて詳しく解説しています。Javaのソースコード付きです。

2019.09.06

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

2020.03.20

キーボードで入力した整数値を配列に格納するメソッドの作り方を解説しています。

2020.08.19

キーボードで入力した整数値を配列にリストするメソッドの作り方を解説しています。

2020.08.19

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

自動で神経衰弱を行うJavaのソースコードを紹介しています。興味のある方は、ご覧ください。

2021.03.31

配列に格納されている数値をランダムに並び替える方法を詳しく解説しています。ソースコード付きです。

2016.01.31

配列に格納されている値を順番に並び替える方法を解説しています。

2019.03.11

画像を、幾何学模様のカラフルなガラスを張って作られたような画像に変換する方法を解説しています。ソースコード付きです。

2017.03.01

文字列を構成する文字コードをbyte型の配列に格納する方法を解説しています。是非、ご覧ください。

2020.10.29

文字列の初期化方法を詳しく解説しています。

2020.03.23

文字列(String型)で格納された整数値を、int型の整数に変換する方法を説明しています。

2020.10.29

文字列の2進数を、int型の整数に変換する方法を詳しく解説しています。

2020.11.02

BufferedImage.subimageメソッドを使って、画像の一部を矩形(長方形)で切り出す方法を解説しています。

2016.2.22

int型の変数を宣言するだけで値を代入しない場合に、その変数の値を確認します。

2021.06.18

広告