2020.03.23
複数の値の合計と平均
はじめに
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 };
008 009 010 011 012 013 014
// 合計値の初期値を0 total = 0; // 値の数を回数にした繰り返し処理 for ( int i = 0; i < num.length; ++ i ) { // 値をtotalに足していく total = total + num[ i ]; }
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で計算しているため小数点以下の値は切り捨てられています。これは、totalとnum.lengthの両方がint型であるため、その計算結果もint型になったためです。
float型または、double型で計算すれば、小数点以下の数値を表現することができます。このソースコードの例では、totalとnum.lengthの前に、(float)を付けることでint型を一時的にfloat型として計算させています。これを型キャストといいます。
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; }
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
キーボードで入力した値を配列に格納する方法は、以下の記事を参照してください。
以上です。