1. test 1
  2. test 2
  3. test 3
  4. test 4
  5. test 5
  6. test 6
コース一覧
Java道場 ハレノヒ珈琲のレジを作る10問
本日の注文を配列で管理せよ

Java道場 ハレノヒ珈琲のレジを作る10問

Java入門で身に付けた技を、カフェのレジ開発で試す演習専用コースです。解説はありません。依頼と完成条件だけを読み、白紙から自分で組み立てます。手が止まったときのために、方針・使う構文・部分解の3段階のヒントを各問に用意しています。レシートの桁揃えから始まり、型の落とし穴、条件分岐、switch、配列の集計、メソッドへの分割、文字列の比較を経て、最後はクラス設計とレジアプリの統合まで、10問で Java の主要な道具を一巡します。1問15分から45分、全10問で約5時間です。Java入門を終えて「読めるけれど自分では書けない」と感じている方に向いています。

1
初段
01. レシートを整形して返せ15分
02. 税込計算の切り捨て事故を防げ15分
03. 注文金額でランク判定20分
04. メニュー番号で注文を受けろ20分
2
中段
01. 複数注文の合計と件数25分
02. 会計処理をメソッドに分けよ25分
03. 本日の注文を配列で管理せよ30分
04. 売れ筋メニューを探せ30分
3
師範
01. Order クラスを設計せよ35分
02. 総合 レジアプリ一気通貫45分

本日の注文を配列で管理せよ

中段 / 目安 30分

閉店後の店内。陽葵さんがレジ袋を畳みながら言いました。「今日の注文金額、ぜんぶ記録して閉店時に集計したいの。感覚だと『今日は忙しかった気がする』で終わっちゃうから。売上は嘘をつかないから」。

これまで扱ってきたのは、1つの変数に入る1つの数でした。今日1日ぶんの注文は、何件になるか事前にはわかりません。複数の値をひとまとまりで持つ入れ物が要ります。それが配列です。

完成条件

summarize(int[] amounts) というメソッドを public static で定義してください。

amounts は本日の注文金額を並べた配列です。この配列を先頭から最後まで走査して、次の2つを求めます。

  • 合計 — 全注文金額の足し算。int です
  • 平均 — 合計を件数で割った値。小数第1位までにします

返す文字列の形は 3件 / 合計 2130円 / 平均 710.0円 です。

注意する点が2つあります。

1つめは平均の型です。int 同士の割り算は小数が消えます。問2で1円のズレに泣いたのと同じ罠が、ここでは小数点以下ごと消える形で出てきます。キャストして小数にしてから割ってください。

2つめは注文が1件も無い日です。配列が空のとき、件数で割ると実行時にエラーが起きます。空の場合は 0件 / 合計 0円 / 平均 0.0円 を返してください。台風の日に落ちるレジは、レジとは言いません。

進め方

白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分で書いた行が動いた瞬間です。

配列の件数は amounts.length で取れます。丸括弧を付けないことに気を付けてください。文字列の length() とは書き方が違います。ここは多くの人が一度は間違える場所です。

小数第1位までの整形は、これまで使ってきたレシートの書式指定がそのまま使えます。String.format はその書式指定を、画面に出す代わりに文字列として受け取る形です。

要件

  1. summarize(int[] amounts) を public static で定義すること
  2. 配列を走査して全注文金額の合計を求めること
  3. 平均はキャストして小数で計算し、小数第1位まで表示すること
  4. 返す文字列の形は「3件 / 合計 2130円 / 平均 710.0円」であること
  5. 配列が空のときは「0件 / 合計 0円 / 平均 0.0円」を返し、エラーで落ちないこと
  6. メソッドの中で println せず、値を return で返すこと

入出力例

summarize([450,680,1000]) → "3件 / 合計 2130円 / 平均 710.0円" summarize([500,500,500,500]) → "4件 / 合計 2000円 / 平均 500.0円" summarize([450,680]) → "2件 / 合計 1130円 / 平均 565.0円" summarize([100,100,100]) → "3件 / 合計 300円 / 平均 100.0円" summarize([980]) → "1件 / 合計 980円 / 平均 980.0円" summarize([]) → "0件 / 合計 0円 / 平均 0.0円"

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 合計を入れる変数を0で用意し、配列を最後まで回して足し込みます。件数と合計が揃ってから平均を計算します。空の配列だけ先に判定して返してしまうと、あとの処理を素直に書けます

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/09

関連レッスン

  • 売れ筋メニューを探せ

    一番多く注文された商品を探します。文字列を == で比べると足をすくわれます。

  • Order クラスを設計せよ

    注文という「もの」をクラスにします。データと振る舞いを1つに束ねます。

  • 会計処理をメソッドに分けよ

    税込計算と割引計算を、2つのメソッドという道具にまとめます。

  • 複数注文の合計と件数

    注文の配列を走査して、品数と合計を1つの報告にまとめます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 変数データに名前をつけて参照する仕組み
  • 配列サイズ固定の同型データの集まり
  • メソッドクラスに属する関数
  • instanceof「このオブジェクトの実際の型は何か」を確認 → 安全に変換
main.java
学習モード
エディタを読み込んでいます

メモ

本日の注文を配列で管理せよ

⌘S で保存