2020.03.23

複数の値の合計と平均

はじめに

ここでは、配列に格納された複数の数値の合計値平均値を計算するプログラムを解説します。

合計値は、配列で与えられた複数の値を全て足した値で、平均値は、合計値を与えらた数で割った数値です。

Javaソースコード

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

Total.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
public class Total {
	public static void main( String[] args ) {
		// 合計値を格納する変数を宣言
		int   total;
		// 数値群
		int[] num = { 10, 5, 22, 56, 13, 77, 26, 43, 6, 4, 19 };

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

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

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Total.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Total.java

実行

C:\talavax\javasample>java Total

出力結果

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

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

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

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

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

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

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

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

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

Javaソースコード

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

Total2.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
public class Total2 {
	// 配列の合計を戻すメソッド
	private static int calc_total( int[] num )
	{
		// 合計値を格納する変数を宣言
		int   total;

		// 合計値の初期値を0
		total = 0;
		// 値の数を回数にした繰り返し処理
		for ( int i = 0; i < num.length; ++ i ) {
			// 値をtotalに足していく
			total = total + num[ i ];
		}
		// 合計値を格納したtotalを戻す
		return total;
	}

	// メイン
	public static void main( String[] args ) {
		// 数値群
		int[] num = { 10, 5, 22, 56, 13, 77, 26, 43, 6, 4, 19 };

		// 合計値を計算
		int total = calc_total( num );

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

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Total2.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Total2.java

実行

C:\talavax\javasample>java Total2

出力結果

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

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

002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
	// 配列の合計を戻すメソッド
	private static int calc_total( int[] num )
	{
		// 合計値を格納する変数を宣言
		int   total;

		// 合計値の初期値を0
		total = 0;
		// 値の数を回数にした繰り返し処理
		for ( int i = 0; i < num.length; ++ i ) {
			// 値をtotalに足していく
			total = total + num[ i ];
		}
		// 合計値を格納したtotalを戻す
		return total;
	}

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

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

Javaソースコード

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

Total3.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
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
import java.util.Scanner;

public class Total3 {
	// キーボード入力した文字列を配列に格納
	private static int[] scanNumbers( )
	{
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

		// 入力した文字列をlineに格納
		String line = scan.nextLine();

		// 半角スペースで区切られた文字列を配列valuesに格納
		String[] values = line.split( " ", 0 );

		// 配列の作成
		int[] numbers = new int[ values.length ];

		// valuesの値をint型に変換し、numbersに格納
		for ( int i = 0; i < values.length; i++ ) {
			// 文字列values[ i ]をint型に変換
			try {
				numbers[ i ] = Integer.parseInt( values[ i ] );
			} catch ( NumberFormatException ex ) {
				// 数字に変換できなければnullを戻す
				return null;
			}
		}

		// int型の配列を戻す
		return numbers;
	}

	// 配列の合計を戻すメソッド
	private static int calc_total( int[] num )
	{
		// 合計値を格納する変数を宣言
		int   total;

		// 合計値の初期値を0
		total = 0;
		// 値の数を回数にした繰り返し処理
		for ( int i = 0; i < num.length; ++ i ) {
			// 値をtotalに足していく
			total = total + num[ i ];
		}
		// 合計値を格納したtotalを戻す
		return total;
	}

	// メイン
	public static void main( String[] args ) {
		// 数値群をキーボードから入力
		System.out.println( "整数値を入力(数字と数字の間は半角スペース)" );
		int[] num = scanNumbers();
		if ( null == num ) {
			System.out.println( "入力した値が不正です!" );
			return;
		}

		// 合計値を計算
		int total = calc_total( num );

		// 結果を表示
		System.out.println( "合計=" + total );
		System.out.println( "値の数=" + num.length );
		System.out.println( "平均(小数切捨て)=" + total / num.length  );
		System.out.println( "平均=" +  (double)total /  (double)num.length );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Total3.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Total3.java

実行

C:\talavax\javasample>java Total3

キーボードで入力した値を配列に格納する方法は、以下の記事を参照してください。

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

2020.08.19

以上です。

関連コンテンツ

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

2022.10.25

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

2016.01.14

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

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

2015.11.01

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

2020.08.19

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

2020.03.23

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

2015.11.29

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

2022.10.17

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

2020.03.23

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.20

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

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

2022.08.03

繰り返し処理の作り方を解説しています。

2016.03.02

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

2020.03.23

キーボードを使って値を入力する方法を解説しています。ソースコード付きです。

2020.08.19

2値化は、画像処理の1つの方法で、カラー画像を2つ色だけで表現する画像に変換することです。この画像処理をJavaで作ってみませんか?

2016.01.21

「0」と「1」の2つの数字で表される2進数(バイナリ)。一般に使われている10進数に変換するには。

2016.02.16

double型のもつ誤差について解説しています。

2016.02.15

カラーの画像を白・灰色・黒だけで表現した画像に変換する方法を解説しています。Javaのソースコード付きです。

2020.03.23

NTSC 加重平均法を使ったグレースケール変換を紹介しています。Javaのソースコードを使って詳しく解説しています。

2016.01.26

画像全体の画素の色RGBの平均値を計算する方法をソースコードを使って解説しています。

2023.05.04

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

2019.08.05

JavaのMath.sqrtメソッドを使わない平方根の計算方法を解説。ソースコードを使って詳しく解説しています。

2022.12.16

円を小さな台形に分割して、その面積の合計で円周率πを計算する方法を紹介しています。図とJavaのソースコードでくわしく説明しています。

2019.06.21

2つの座標(x1,y1)と(x2,y2)の直線距離を求める計算式は?

2020.03.23

2つのXYZ座標(x1,y1,z1)と(x2,y2,z2)の直線距離を求める計算式は?

2020.03.23

ピタゴラスの定理は、直角三角形の三辺の長さの関係を表すもので、2つの座標間の距離計算などに利用できます。興味がある方は、記事をご覧ください。

2020.03.23

Math.sinメソッド、Math.cosメソッドを使わない計算方法を詳しく解説します。

2017.08.09

黒と白の放射状模様画像を作成する方法を紹介しています。

2019.04.30

画像全体をぼやけた感じにする処理のJavaソースコードを紹介しています。、

2016.08.09

1+2+3+ … +Nを計算する公式と、その導き方を掲載しています。面積を使って公式を導いています。

2021.07.07

式の値によって処理を分岐する方法を詳しく解説しています。

2016.08.04

0から90°のsin(x)、sin(x)の表を作成する方法をソースコードを使って詳しく解説しています。

2022.09.24

0から90°のsin(x)、sin(x)、tan(x)の表を作成する方法をソースコードを使って詳しく解説しています。

2022.09.24

0から359°のsin(x)、sin(x)、tan(x)の表を作成する方法をソースコードを使って詳しく解説しています。

2022.09.24

広告