学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース

Javaプログラミング入門その9 配列を用いたプログラム

<<前  [TOP]  次>>


メモ帳を開いて次のプログラムを作ってみましょう。


Hairetsu.java 直

public class Hairetsu { 
	public static void main ( String[] args ) {

		int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		int tmp;

		for( int i=0; i<a.length; i++ ) {

			tmp = a[i] * a[i];
			System.out.println( a[i] + "*" + a[i] + "=" + tmp );
		}
	}
}



配列を扱うには次のようにします。


配列を宣言する。
int a[ ];


配列のためのメモリを確保する。
a = new int[10];


配列宣言と同時に直接値を代入する。
int a[ ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };


今回は配列宣言と同時に直接値を代入しています。
小さなプログラムのため、あえて確保するメモリの大きさを指定しませんでした。


大規模なプログラムになると、処理スピードに影響が出ますので、メモリの大きさを指定することができるなら、必ず指定した方が良いです。


メモリを確保するには、new演算子を使います。


配列の宣言とメモリの確保を同時にするには次のように書きます。
int a[ ] = new int[10];


どちらでも好きな方を使用してください。


今回のプログラムでメモリ領域を確保する場合、次のようになります


int a[ ];
a = new int[10];
a[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};


また、配列に代入した値を使用する場合は、次のように使用します。


a[0];
a[3];


配列をわかりやすく書くと次のようになります。
int a[] = { a[0],a[1],a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9] };


ゆえにa[0]は1であり、a[5]は6、a[9]は10となります。
これを使って、計算などを行うには次のようにしてやります。


int tmp = a[5] + a[7];


変数tmpの値は14となります。


また、配列の数を表すには次のようなやり方があります。


変数名.length


使用例  a.length


今回の a.length は 10になります。


出力結果を見てみましょう。





メモ帳を開いて次のプログラムを作ってみましょう。


Hairetsu2.java 直

public class Hairetsu2 { 
	public static void main ( String[] args ) {

		int[] data = { 10, 75, 24, 32, 98,
				72, 88, 43, 60, 35,
					54, 62, 2, 12, 82,
			};

		int sum = 0;

		for( int i=0; i<data.length; i++ ) {
			sum += data[i];
		}
		System.out.println( "合計:" + sum );
	}
}



合計を求めるプログラムです。


sum += data[i];
の意味は
sum = sum + data[i];
と同じ意味です。


繰り返されるごとにdata[0]から足されていき、最後には合計が求められます。


出力結果です。





メモ帳を開いて次のプログラムを作ってみましょう。


Hairetsu3.java 直

public class Hairetsu3 { 
	public static void main( String[] args ) { 

		int[] data = { 10, 75, 24, 32, 98, 72, 88, 43, 60, 35, 54, 62, 2, 12, 82, };

		int sum = 0;

		for( int i=0; i<data.length; i++ ) { 
			sum += data[i]; 
		}

		float ave =  ((float)sum)/data.length;
		System.out.println( "平均:" + ave );
	}
}



合計を求めるまでは、Hairetsu2.javaと同じですが平均を求める式のところが今までと違うことをやっていますので説明します。


変数の計算は同じ型同士でしなくてはなりません。
違う型同士で演算すると思わぬエラーがでたり、予想と違った出力結果になったりします。


今回は結果を小数点まで求めたかったので、変数aveをfloat型としました。
しかし、合計を求める際に、変数sumをint型としたために演算するときに型をそろえる必要が出てきました。
もし、int型のまま演算すると答えは49になってしまいます。


そこで、次のようにしてsumの型をfloat型にします。


(float)sum


このように型を変えることをキャストといいます。


型をそろえることでfloat同士の演算となりますので、小数点以下も求めることができます。


data.lengthは(float)data.lengthとしても良いのですが、必要がないので書いていません。
data.lengthと書けば、javaの方で自動に一番良い型を返してくれます。


また、floatからintなどのバイトの低いほうへキャストするときはデータの型落ちが生じますので気をつけてください。
たとえば、49.996などのfloat型をint型にキャストすると、49になってしまいます。


出力結果です。





メモ帳を開いて次のプログラムを作ってみましょう。


Hairetsu4.java 直

public class Hairetsu4 { 
	public static void main( String[] args ) {

		int[] data = { 10, 75, 24, 32, 98, 72, 88, 43, 60, 35, 54, 62, 2, 12, 82, };

		int max = data[0];

			for( int i=1; i<data.length; i++ ) {

				if( data[i] > max )
					max = data[i];
			}
			System.out.println( "最大値:" + max );	
	}
}



最大値を求めるプログラムです。
結果を確認してみましょう。





<<前  [TOP]  次>>