0503「統計学の計算をしよう」

今回やりたいこと


例題

たかしくんは統計学の勉強をしている。
先生はイケメンだが、テストが難しいため、チートシートをあらかじめ作成しておきたい。

2つ以上の整数値を標準入力に入力したとき、入力した全整数値の 最大値, 最小値, 合計値, 平均値, 中央値 をそれぞれ標準出力に出力するプログラムを作成しなさい。


要件

  • 平均値および中央値は、小数点以下2桁まで出力する



実行例1

標準入力
1
5
2
4
3
標準出力
5
1
15
3.00
3.00



実行例2

標準入力
12
34
56
78
90
111
標準出力
111
12
381
63.50
67.00


サンプルコード

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Ex_05_03 {

	public static void main(String[] args) {
		// 入力
		Scanner scan = new Scanner(System.in);
		ArrayList<Integer> nums = new ArrayList<>();
		while(scan.hasNextInt()) nums.add(scan.nextInt());
		
		// 計算
		Collections.sort(nums);			// 昇順ソート
		
		int max = nums.get(nums.size()-1);	// 最大値
		int min = nums.get(0);			// 最小値
		
		int sum = 0;				// 合計値
		for(int i=0; i<nums.size(); i++) sum += nums.get(i);
		
		double ave = (double) sum/nums.size();	// 平均値
		
		double med;				// 中央値
		if(nums.size()%2==1) med = nums.get((nums.size()-1)/2);
		else med = (double) (nums.get(nums.size()/2-1) + nums.get(nums.size()/2)) / 2;
		
		// 出力
		System.out.println(max);
		System.out.println(min);
		System.out.println(sum);
		System.out.printf("%.2f\n", ave);
		System.out.printf("%.2f\n", med);
	}

}


解説

ArrayList

リストを操作するときに使用するクラスです。
java.util.ArrayList の import が必要になります。
リストは配列と比較して、要素数をあらかじめ指定しなくてよいなどの特徴があります。

Collections.sort(List<T> list)

指定されたリストの要素を昇順にソートするメソッドです。