ここまでの流れを総合して、入力した整数リストから「合計・平均・最大値・最小値・出現回数ランキング・棒グラフ」まで一度に出力する総合プログラムを作ってみましょう。
総合プログラム
import java.util.*;
public class ListAnalysisAll {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> numbers = new ArrayList<>();
System.out.println("整数をスペース区切りで入力してください(例: 10 20 30 20 10):");
String line = sc.nextLine();
// 入力を分割してリストに追加
String[] parts = line.split("\\s+");
for (String p : parts) {
try {
int n = Integer.parseInt(p);
numbers.add(n);
} catch (NumberFormatException e) {
System.out.println("数値に変換できません: " + p);
}
}
if (numbers.isEmpty()) {
System.out.println("有効な数値が入力されませんでした。");
return;
}
// --- 基本統計値 ---
int sum = 0;
for (int n : numbers) sum += n;
double avg = (double) sum / numbers.size();
int max = Collections.max(numbers);
int min = Collections.min(numbers);
// --- 出現回数マップ ---
Map<Integer, Integer> countMap = new HashMap<>();
for (int n : numbers) {
countMap.put(n, countMap.getOrDefault(n, 0) + 1);
}
// --- 出現回数ランキング(降順ソート) ---
List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(countMap.entrySet());
entryList.sort((e1, e2) -> e2.getValue().compareTo(e1.getValue()));
// --- 出力 ---
System.out.println("\n=== 入力データ分析結果 ===");
System.out.println("入力リスト: " + numbers);
System.out.println("合計: " + sum);
System.out.println("平均: " + avg);
System.out.println("最大値: " + max);
System.out.println("最小値: " + min);
System.out.println("\n出現回数ランキング:");
int rank = 1;
for (Map.Entry<Integer, Integer> entry : entryList) {
System.out.println(rank + "位: " + entry.getKey() + "(" + entry.getValue() + "回)");
rank++;
}
System.out.println("\n出現回数グラフ:");
for (Map.Entry<Integer, Integer> entry : entryList) {
int value = entry.getKey();
int count = entry.getValue();
String bar = "#".repeat(count); // Java 11以降
System.out.println(value + " : " + bar + " (" + count + ")");
}
}
}
Java✅ 実行例
整数をスペース区切りで入力してください(例: 10 20 30 20 10):
30 10 20 10 40 20 10 30
=== 入力データ分析結果 ===
入力リスト: [30, 10, 20, 10, 40, 20, 10, 30]
合計: 170
平均: 21.25
最大値: 40
最小値: 10
出現回数ランキング:
1位: 10(3回)
2位: 30(2回)
3位: 20(2回)
4位: 40(1回)
出現回数グラフ:
10 : ### (3)
30 : ## (2)
20 : ## (2)
40 : # (1)
このプログラムでできること
- 基本統計値(合計・平均・最大・最小)
- 出現回数ランキング(多い順)
- 棒グラフ風の可視化
👉 これで「入力 → 集計 → ランキング → グラフ表示」まで一通りの分析が完成しました。

