では「上級の実務アプリ」として、配列操作・多次元配列・ファイル・ユーザー入力・表示の複合処理 を含むサンプルを作ります。
プログラミング初心者から上級者までのステップアップに役立つ内容です。
上級実務アプリ例:売上管理システム(配列版)
概要
- 目的:月別・商品別の売上データを管理し、集計・出力する
- 特徴:
- 多次元配列を使った売上表
- 配列のコピー・集計・ソート
- ユーザー入力によるデータ更新
- 配列を使った表示(toString / deepToString)
実装例(Java)
import java.util.Arrays;
import java.util.Scanner;
public class SalesManager {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 商品リスト
String[] products = {"Pen", "Notebook", "Eraser"};
// 月別売上(3商品 × 12ヶ月)
int[][] sales = new int[products.length][12];
// データ入力
for (int i = 0; i < products.length; i++) {
System.out.println(products[i] + " の月別売上を入力してください(12ヶ月):");
for (int j = 0; j < 12; j++) {
System.out.print("月 " + (j+1) + ": ");
sales[i][j] = sc.nextInt();
}
}
// 売上合計を計算
int[] totalSales = new int[products.length];
for (int i = 0; i < products.length; i++) {
for (int j = 0; j < 12; j++) {
totalSales[i] += sales[i][j];
}
}
// 売上順にソート(降順)
int[] sortedIndex = new int[products.length];
for (int i = 0; i < products.length; i++) sortedIndex[i] = i;
for (int i = 0; i < products.length - 1; i++) {
for (int j = i + 1; j < products.length; j++) {
if (totalSales[sortedIndex[i]] < totalSales[sortedIndex[j]]) {
int tmp = sortedIndex[i];
sortedIndex[i] = sortedIndex[j];
sortedIndex[j] = tmp;
}
}
}
// 結果表示
System.out.println("\n=== 月別売上表 ===");
for (int i = 0; i < products.length; i++) {
int idx = sortedIndex[i];
System.out.println(products[idx] + " : " + Arrays.toString(sales[idx]) + " 合計: " + totalSales[idx]);
}
sc.close();
}
}
Javaポイント解説
- 多次元配列の活用
sales[商品][月]の形で 2次元配列を利用- 商品ごとの月別データをまとめて管理
- 配列のコピー・参照
sortedIndexで売上合計順にインデックスを管理- 元の
sales配列は並び替えずに保持
- 配列の表示
Arrays.toStringで 1次元配列を見やすく出力deepToStringは今回は使用せず、2次元配列をループで出力
- ユーザー入力
- Scanner を使って月別売上を入力
- 実務での「データ更新処理」を再現
- ソート処理(応用)
- 合計売上順に商品を並び替えて表示
- インデックス配列を使うことで元データを壊さない
応用ポイント(上級)
- 2次元配列を CSV ファイルから読み込む
- ソートを Collections や Stream で書き換える
- ユーザーに「商品を追加/削除」できるように拡張
- 月別グラフ表示(Swing や JavaFX)
このアプリは 上級者向けの配列操作総まとめ として使えます。
- 配列操作(コピー・並び替え・集計)
- 多次元配列
- 表示
- ユーザー入力
すべての要素を実務に近い形で学べます。


