会計処理をメソッドに分けよ
中段 / 目安 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でレジを組み上げるときに効いてきます。
要件
- calcTax(int price) は消費税10%を掛けた税込価格を切り捨ての int で返すこと
- applyDiscount(int price, int percent) は割引後の価格を切り捨ての int で返すこと
- checkout(int price, int percent) は calcTax と applyDiscount を両方呼び出すこと
- 税込にしてから割引を引く順番にすること
- checkout が返す文字列の形は「税込 495円 / 割引後 446円」であること
- 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円"ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです