1. test 1
  2. test 2
  3. test 3
  4. test 4
  5. test 5
コース一覧
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分

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

中段 / 目安 25分

カメ師範が、カウンターの端からあなたの画面をのぞき込んで言いました。「レジのコードが伸びてきたな。税込計算と割引計算、そのたびに書き下しておるだろう。メソッドという道具にせよ」。

陽葵さんが横から口を挟みます。「あの、直すたびに同じ数字を3か所も4か所も探してて…確かに大変です」。師範がうなずきました。「直す場所が1つで済む形にする。それがメソッドだ」

ここで作る2つの道具は、この先の問7から問10まで、ずっと持ち出して使います。名前と引数と戻り値を、いま丁寧に決めてください。

完成条件

ハレノヒ珈琲の会計は、税込にしてから割引を引くという順番です。この順番は税額の計算根拠になるので、勝手に入れ替えてはいけません。

次の3つのメソッドを public static で定義してください。

  • calcTax(int price) は税抜価格を受け取り、消費税10%を掛けた税込価格を小数点以下切り捨ての int で返します
  • applyDiscount(int price, int percent) は価格と割引率を受け取り、割引後の価格を切り捨ての int で返します。割引率が0なら価格はそのままです
  • checkout(int price, int percent) は上の2つを両方呼び出して、税込 495円 / 割引後 445円 の形の文字列を返します

採点は checkout を通して行います。calcTax と applyDiscount を呼ばずに checkout の中へ計算を書き込んでも数字だけは合ってしまいますが、それでは道具を作ったことになりません。師範に見られていると思って分けてください。

進め方

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

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

問2で踏んだ切り捨ての罠が、ここでも顔を出します。int に 1.1 を掛けた時点で結果は double です。どこで int に戻すかを自分で決めてください。

メソッドの中で System.out.println を書いてはいけません。メソッドは値を返すだけにして、見せ方は呼んだ側が決めます。この分け方が、問10でレジを組み上げるときに効いてきます。

要件

  1. calcTax(int price) は消費税10%を掛けた税込価格を切り捨ての int で返すこと
  2. applyDiscount(int price, int percent) は割引後の価格を切り捨ての int で返すこと
  3. checkout(int price, int percent) は calcTax と applyDiscount を両方呼び出すこと
  4. 税込にしてから割引を引く順番にすること
  5. checkout が返す文字列の形は「税込 495円 / 割引後 446円」であること
  6. 3つとも public static で定義し、メソッドの中で println しないこと

入出力例

checkout(450, 10) → "税込 495円 / 割引後 445円" checkout(450, 0) → "税込 495円 / 割引後 495円" checkout(680, 20) → "税込 748円 / 割引後 598円" checkout(1200, 15) → "税込 1320円 / 割引後 1122円" checkout(99, 50) → "税込 108円 / 割引後 54円"

ヒント

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

①方針 小さい道具を2つ先に作り、checkout はその2つをつなぐだけの短いメソッドにします。checkout の中に計算式そのものを書かないのが今回の狙いです

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

関連レッスン

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

    1日ぶんの注文を集計します。平均は整数の割り算のままでは出ません。

  • 売れ筋メニューを探せ

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

  • Order クラスを設計せよ

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

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

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

  • カウンタ数を保持して増減する典型 UI
  • メソッドクラスに属する関数
  • 引数位置引数=順番で渡す。
  • 戻り値呼び出し元への返答を表す点線矢印
main.java
学習モード
エディタを読み込んでいます

メモ

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

⌘S で保存