メニュー番号で注文を受けろ
初段 / 目安 20分
ランチの混雑が落ち着いたころ、陽葵さんがメニュー表に番号を書き込んでいます。「口頭注文は聞き間違いが多くて。『抹茶ラテ』が『抹茶ラッシー』に聞こえたこともあるの。番号で受けたいのよ」。番号はこう決まりました。
プレーンテキスト
1 珈琲 450円
2 抹茶ラテ 520円
3 シフォンケーキ 480円ここで考えておくことが1つあります。お客様は 4 と言うかもしれません。0 かもしれません。マイナスかもしれません。 メニューに無い番号が来たときに何を返すか。それを最初に決めておかないと、あとで必ず事故ります。
師範はこう言います。「例外側から設計する者は事故らない」。正常な3つより先に、想定外の1つを書いておくということです。
完成条件
メニュー番号を受け取り、注文内容を1行の文字列で返すメソッド orderByNumber(int number) を作ってください。
- 1 なら
珈琲 450円 - 2 なら
抹茶ラテ 520円 - 3 なら
シフォンケーキ 480円 - それ以外の番号はすべて
その番号はありません
商品名と金額のあいだは半角スペース1つ、金額のうしろに「円」を付けます。文言は完全一致です。
進め方
白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分で書いた行が動いた瞬間です。
番号のように「とびとびの決まった値」で分けるときは、if を並べるより読みやすい構文が Java にあります。その構文には、どれにも当てはまらなかったときの受け皿が用意されています。受け皿を先に書いてから、中身を埋めてください。
要件
- メソッド名は orderByNumber、引数は int number の1つ
- 1 なら「珈琲 450円」を返すこと
- 2 なら「抹茶ラテ 520円」を返すこと
- 3 なら「シフォンケーキ 480円」を返すこと
- 1から3以外の番号はすべて「その番号はありません」を返すこと
- 印字ではなく return で String を返すこと
入出力例
orderByNumber(1) → "珈琲 450円"
orderByNumber(2) → "抹茶ラテ 520円"
orderByNumber(3) → "シフォンケーキ 480円"
orderByNumber(4) → "その番号はありません"
orderByNumber(0) → "その番号はありません"
orderByNumber(-1) → "その番号はありません"
orderByNumber(99) → "その番号はありません"ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです
ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
編集 ゆめさく編集部