レシートを整形して返せ
初段 / 目安 15分
カフェ「ハレノヒ珈琲」のカウンターで、店長の陽葵さんがレシートの束を扇のように広げています。「まずレシート! 商品名は左揃え、金額は右揃えでピシッと。うちのレシートは美しくありたいの」。電卓と手書き伝票でやりくりしてきた会計は、そろそろ限界のようです。
手書きのレシートは、書く人によって位置がずれます。プログラムに任せるなら、そのずれは無くせます。桁を揃えるというのは、見た目の趣味ではなく、読み間違いを減らす仕事です。
ここで作るのは、レシートの1行だけです。商品名と金額を受け取って、決まった幅に収めた1行を組み立てて返します。
完成条件
商品名と金額から、レシート1行の文字列を返すメソッド formatLine(String name, int price) を作ってください。
- 商品名は左揃えで幅10。うしろを半角スペースで埋めます
- 金額は右揃えで幅5。前を半角スペースで埋めます
- 商品名と金額のあいだに、余分な区切り文字は入れません
formatLine("珈琲", 450) なら、次の1行になります。全角の商品名は2文字ぶんではなく2文字として数えます。幅10というのは文字数のことです。
プレーンテキスト
珈琲 450商品名「珈琲」が2文字、うしろに8個のスペース、そのあと金額 450 が幅5の右揃えなので前に2個のスペース、続けて 450 です。
進め方
白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分で書いた行が動いた瞬間です。
文字列を1文字ずつ足していく道もありますが、Java には書式を指定して文字列を組み立てる道具が最初から入っています。印字ではなく、組み立てた文字列を返すのが今回の仕事です。
要件
- メソッド名は formatLine、引数は String name と int price の2つ
- 商品名は左揃えで幅10にすること
- 金額は右揃えで幅5にすること
- 商品名と金額のあいだに区切り文字を入れないこと
- System.out.println ではなく return で文字列を返すこと
入出力例
formatLine("珈琲", 450) → "珈琲 450"
formatLine("抹茶ラテ", 520) → "抹茶ラテ 520"
formatLine("シフォンケーキ", 480) → "シフォンケーキ 480"
formatLine("アイスコーヒーS", 1200) → "アイスコーヒーS 1200"ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです