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分

税込計算の切り捨て事故を防げ

初段 / 目安 15分

朝いちばんで陽葵さんから電話がかかってきました。「税込価格がおかしいってお客様に言われたの! 450円の珈琲が、レジだと432円で出てくるの。安いぶんにはいいのかしらって思ったけど、よく考えたら税込のほうが安いってどういうこと?」。たしかに、税を足したのに元より安くなるのは変です。

前の担当者が書いた行はこれです。

Java

return price / 100 * 110;

税率10パーセントを掛けたいので、100で割って110を掛ける。式としては読めます。しかし Java では、int どうしの割り算は小数を切り捨てます。四捨五入ではなく切り捨てです。450 / 100 は 4.5 ではなく 4 になり、そこに110を掛けて440。消えた 0.5 が、そのまま金額の穴になっています。

順番を入れ替えるだけで直ります。掛けてから割れば、割り算の時点では小数が出るほど小さな数になっていません。

完成条件

税抜価格を受け取り、税込価格を返すメソッド taxIncluded(int price) を作ってください。

  • 税率は10パーセントとします
  • 1円未満は切り捨てます。450 なら 495 です
  • 戻り値は int です

次の値が正しく出れば通ります。

プレーンテキスト

450 -> 495 520 -> 572 480 -> 528 99 -> 108

99 の税込は本当は 108.9 ですが、1円未満は切り捨てるので 108 です。今回は切り捨ててよい場面なので、切り捨て自体が悪者なのではありません。悪いのは、意図していない場所で勝手に切り捨てられることです。

進め方

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

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

直し方は2通りあります。整数のまま計算の順番を変える道と、いったん小数にしてから整数へ戻す道です。どちらでも通ります。両方書いてみて、99円のときに同じ答えになるか確かめてみてください。

要件

  1. メソッド名は taxIncluded、引数は int price の1つ
  2. 税率は10パーセントとすること
  3. 1円未満は切り捨てること。450 の税込は 495 になる
  4. price / 100 * 110 のように先に割ってはいけない
  5. 戻り値は int にすること

入出力例

taxIncluded(450) → "495" taxIncluded(520) → "572" taxIncluded(480) → "528" taxIncluded(99) → "108" taxIncluded(100) → "110" taxIncluded(0) → "0"

ヒント

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

①方針 int どうしの割り算は小数を切り捨てます。割り算を最後に回せば、途中で捨てられる小数がそもそも生まれません

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

関連レッスン

  • 注文金額でランク判定

    お会計の金額を3つに分類します。境界のちょうどの値でつまずかないようにします。

  • メニュー番号で注文を受けろ

    番号から商品名と価格を引きます。知らない番号が来たときの答えも決めます。

  • 複数注文の合計と件数

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

  • Order クラスを設計せよ

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

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

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

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

メモ

税込計算の切り捨て事故を防げ

⌘S で保存