複数注文の合計と件数
中段 / 目安 25分
夕方、陽葵さんがカウンター越しに身を乗り出してきました。「4番テーブル、5品も頼んでくれたの! 品数と合計を一気に計算して。今から手で足すと絶対どこかで間違える自信があるわ」。
渡されるのは、その伝票に並んだ金額の一覧です。1品ぶんの金額が、注文された順に並んでいます。ここから2つの数を取り出します。何品あったかと、合計いくらかです。
数え上げの仕事は、たいてい同じ形をしています。まず入れ物を用意して0から始め、1つずつ見ながら足していく。この形を一度自分の手で書いておくと、これから何度も使えます。
もう1つ、レジには必ず来る場面があります。1品も注文されていない伝票です。合計は0円、件数も0件。割り算はしないので今回は壊れませんが、返す文言は決めておきます。
完成条件
注文金額の配列を受け取り、報告用の1行を組み立てて返すメソッド summarizeOrder(int[] prices) を作ってください。
- 返す文字列の形は
5品 4200円です - 数字と単位のあいだにスペースは入れません。品数と金額のあいだは半角スペース1つです
- 配列が空のときは
注文なしを返します
{450, 520, 480, 1550, 1200} を渡したら 5品 4200円 が返ります。
進め方
白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分で書いた行が動いた瞬間です。
件数は数え上げなくても分かります。配列は自分の長さを知っているからです。数え上げが要るのは合計のほうだけです。空の場合を先に片づけてしまうと、そのあとの本題が短く書けます。
要件
- メソッド名は summarizeOrder、引数は int[] prices の1つ
- 返す文字列の形は「5品 4200円」であること
- 品数は配列の要素数、合計は全要素の和とすること
- 配列が空のときは「注文なし」を返すこと
- 印字ではなく return で String を返すこと
入出力例
summarizeOrder([450,520,480,1550,1200]) → "5品 4200円"
summarizeOrder([450,520]) → "2品 970円"
summarizeOrder([480]) → "1品 480円"
summarizeOrder([]) → "注文なし"ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです
ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
編集 ゆめさく編集部