Javaプログラミング学習サイト ゆるゆるプログラミング

2020/03/23 公開

・複数の値の合計と平均

複数の数値の合計値と平均値を計算するプログラムを解説します。合計値は、配列で与えられた複数の値を全て足した値で、平均値は、合計値を与えらた数で割った数値です。

以下が、配列の値の合計値と平均値を求めるJavaのソースソースコードです。

Total.java ← クリックしてダウンロードページに移動
001:    public class Total {
002:    	public static void main( String[] args ) {
003:    		// 合計値を格納する変数を宣言
004:    		int   total;
005:    		// 数値群
006:    		int[] num = { 10, 5, 22, 56, 13, 77, 26, 43, 6, 4, 19 };
007:    
008:    		// 合計値の初期値を0
009:    		total = 0;
010:    		// 値の数を回数にした繰り返し処理
011:    		for ( int i = 0; i < num.length; ++ i ) {
012:    			// 値をtotalに足していく
013:    			total = total + num[ i ];
014:    		}
015:    
016:    		// 結果を表示
017:    		System.out.println( "合計=" + total );
018:    		System.out.println( "値の数=" + num.length );
019:    		System.out.println( "平均(小数切捨て)=" + total / num.length  );
020:    		System.out.println( "平均=" + (float)total / (float)num.length );
021:    	}
022:    }

Total.javaの出力結果

合計=281
値の数=11
平均(小数切捨て)=25
平均=25.545454

合計値と平均値を計算するプログラムについて解説します。

005:    		// 数値群
006:    		int[] num = { 10, 5, 22, 56, 13, 77, 26, 43, 6, 4, 19 };

この例では、11個の数値をint型配列で与えています。

008:    		// 合計値の初期値を0
009:    		total = 0;
010:    		// 値の数を回数にした繰り返し処理
011:    		for ( int i = 0; i < num.length; ++ i ) {
012:    			// 値をtotalに足していく
013:    			total = total + num[ i ];
014:    		}

for文を使った11回(num.length)のループで、変数totalに値を足していっています。このループを抜けると、変数totalに合計値が格納されてます。

016:    		// 結果を表示
017:    		System.out.println( "合計=" + total );
018:    		System.out.println( "値の数=" + num.length );
019:    		System.out.println( "平均(小数切捨て)=" + total / num.length  );
020:    		System.out.println( "平均=" + (float)total / (float)num.length );

結果を表示しています。ここで、平均値の計算方法について考えていきます。平均(小数切捨て)は、total / num.lengthで計算しているため小数点以下の値は切り捨てられています。これは、totalnum.lengthの両方がint型であるため、その計算結果もint型になったためです。

float型または、double型で計算すれば、小数点以下の数値を表現することができます。このソースコードの例では、totalnum.lengthの前に、(float)を付けることでint型を一時的にfloat型として計算させています。これを型キャストといいます。

次に、配列合計値の計算をメソッドで行うプログラムを紹介します。以下は、そのJavaソースコードです。

Total2.java ← クリックしてダウンロードページに移動
001:    public class Total2 {
002:    	// 配列の合計を戻すメソッド
003:    	private static int calc_total( int[] num )
004:    	{
005:    		// 合計値を格納する変数を宣言
006:    		int   total;
007:    
008:    		// 合計値の初期値を0
009:    		total = 0;
010:    		// 値の数を回数にした繰り返し処理
011:    		for ( int i = 0; i < num.length; ++ i ) {
012:    			// 値をtotalに足していく
013:    			total = total + num[ i ];
014:    		}
015:    		// 合計値を格納したtotalを戻す
016:    		return total;
017:    	}
018:    
019:    	// メイン
020:    	public static void main( String[] args ) {
021:    		// 数値群
022:    		int[] num = { 10, 5, 22, 56, 13, 77, 26, 43, 6, 4, 19 };
023:    
024:    		// 合計値を計算
025:    		int total = calc_total( num );
026:    
027:    		// 結果を表示
028:    		System.out.println( "合計=" + total );
029:    		System.out.println( "値の数=" + num.length );
030:    		System.out.println( "平均(小数切捨て)=" + total / num.length  );
031:    		System.out.println( "平均=" + (float)total / (float)num.length );
032:    	}
033:    }

Total2.javaの出力結果

合計=281
値の数=11
平均(小数切捨て)=25
平均=25.545454

結果は、Total.Javaから出力される結果と同じです。

002:    	// 配列の合計を戻すメソッド
003:    	private static int calc_total( int[] num )
004:    	{
005:    		// 合計値を格納する変数を宣言
006:    		int   total;
007:    
008:    		// 合計値の初期値を0
009:    		total = 0;
010:    		// 値の数を回数にした繰り返し処理
011:    		for ( int i = 0; i < num.length; ++ i ) {
012:    			// 値をtotalに足していく
013:    			total = total + num[ i ];
014:    		}
015:    		// 合計値を格納したtotalを戻す
016:    		return total;
017:    	}

calc_totalメソッドは、引数として受け取ったint型配列numの値を全て足した値を戻します。

for文を0から(num.length-1)のループで、変数totalに値にnum[ i ]を足していっています。このループを抜けると、変数totalに合計値が格納されてます。 最後にreturn分でtotalの値を戻しています。

最後に、キーボード入力した値で合計値の計算するJavaソースコードを紹介します。数字を半角スペースで区切って数値を入力していき、Enterキーで入力を終了します。その際、半角スペースは2個以上連続で入力しないでください。

Total3.java ← クリックしてダウンロードページに移動
001:    import java.util.Scanner;
002:    
003:    public class Total3 {
004:    	// キーボード入力した文字列を配列に格納
005:    	private static int[] scanNumbers( )
006:    	{
007:    		// Scannerを作成
008:    		Scanner scan = new Scanner( System.in );
009:    
010:    		// 入力した文字列をlineに格納
011:    		String line = scan.nextLine();
012:    
013:    		// 半角スペースで区切られた文字列を配列valuesに格納
014:    		String[] values = line.split( " ", 0 );
015:    
016:    		// 配列の作成
017:    		int[] numbers = new int[ values.length ];
018:    
019:    		// valuesの値をint型に変換し、numbersに格納
020:    		for ( int i = 0; i < values.length; i++ ) {
021:    			// 文字列values[ i ]をint型に変換
022:    			try {
023:    				numbers[ i ] = Integer.parseInt( values[ i ] );
024:    			} catch ( NumberFormatException ex ) {
025:    				// 数字に変換できなければnullを戻す
026:    				return null;
027:    			}
028:    		}
029:    
030:    		// int型の配列を戻す
031:    		return numbers;
032:    	}
033:    
034:    	// 配列の合計を戻すメソッド
035:    	private static int calc_total( int[] num )
036:    	{
037:    		// 合計値を格納する変数を宣言
038:    		int   total;
039:    
040:    		// 合計値の初期値を0
041:    		total = 0;
042:    		// 値の数を回数にした繰り返し処理
043:    		for ( int i = 0; i < num.length; ++ i ) {
044:    			// 値をtotalに足していく
045:    			total = total + num[ i ];
046:    		}
047:    		// 合計値を格納したtotalを戻す
048:    		return total;
049:    	}
050:    
051:    	// メイン
052:    	public static void main( String[] args ) {
053:    		// 数値群をキーボードから入力
054:    		System.out.println( "整数値を入力(数字と数字の間は半角スペース)" );
055:    		int[] num = scanNumbers();
056:    		if ( null == num ) {
057:    			System.out.println( "入力した値が不正です!" );
058:    			return;
059:    		}
060:    
061:    		// 合計値を計算
062:    		int total = calc_total( num );
063:    
064:    		// 結果を表示
065:    		System.out.println( "合計=" + total );
066:    		System.out.println( "値の数=" + num.length );
067:    		System.out.println( "平均(小数切捨て)=" + total / num.length  );
068:    		System.out.println( "平均=" + (double)total / (double)num.length );
069:    	}
070:    }

キーボード入力の詳しい説明は「 キーボード入力値を配列に格納 」を参照してください。

■関連コンテンツ

Javaの配列 同じ型の変数をまとめた配列について解説
型キャスト 変数の型を変換する方法について解説
キーボード入力値を配列に格納 キーボード入力→配列
繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

 

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2021/6/18 14:32時点)
感想(6件)

 

 

 

 

Topへ