From 1c0bc5b1cd31db8f26f53dff7b2e2a7732050a3e Mon Sep 17 00:00:00 2001 From: Keisuke Kurosawa Date: Sun, 22 Oct 2023 20:25:28 +0900 Subject: [PATCH 1/2] Print the correct total price * cafe.rb: Change ":price" values to Integer objects, and sum the prices of the selected menus. (take_order): Choose the correct menu. --- cafe.rb | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/cafe.rb b/cafe.rb index 2069514..d6c8480 100644 --- a/cafe.rb +++ b/cafe.rb @@ -1,34 +1,36 @@ # frozen_string_literal: true DRINKS = [ - { name: 'コーヒー', price: '300' }, - { name: 'カフェラテ', price: '400' }, - { name: 'チャイ', price: '460' }, - { name: 'エスプレッソ', price: '340' }, - { name: '緑茶', price: '450' } + { name: 'コーヒー', price: 300 }, + { name: 'カフェラテ', price: 400 }, + { name: 'チャイ', price: 460 }, + { name: 'エスプレッソ', price: 340 }, + { name: '緑茶', price: 450 } ].freeze FOODS = [ - { name: 'チーズケーキ', price: '470' }, - { name: 'アップルパイ', price: '520' }, - { name: 'ホットサンド', price: '410' } + { name: 'チーズケーキ', price: 470 }, + { name: 'アップルパイ', price: 520 }, + { name: 'ホットサンド', price: 410 } ].freeze def take_order(menus) menus.each.with_index(1) do |menu, i| puts "(#{i})#{menu[:name]}: #{menu[:price]}円" end - print '>' - order_number = gets.to_i + until (order_number ||= -1).between?(0, menus.size - 1) + print '>' + order_number = gets.to_i - 1 + end puts "#{menus[order_number][:name]}(#{menus[order_number][:price]}円)ですね。" order_number end puts 'bugカフェへようこそ!ご注文は? 番号でどうぞ' -order1 = take_order(DRINKS) +order_drink = take_order(DRINKS) puts 'フードメニューはいかがですか?' -order2 = take_order(FOODS) +order_food = take_order(FOODS) -total = FOODS[order1][:price] + DRINKS[order2][:price] +total = DRINKS[order_drink][:price] + FOODS[order_food][:price] puts "お会計は#{total}円になります。ありがとうございました!" From 3bab48ddbc2bbc3f1ceef454b44a33595a692cc0 Mon Sep 17 00:00:00 2001 From: Keisuke Kurosawa Date: Wed, 1 Nov 2023 16:26:38 +0900 Subject: [PATCH 2/2] Improve source code * cafe.rb (take_order): Change until statement to begin statement with until modifier. --- cafe.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cafe.rb b/cafe.rb index d6c8480..9a0c601 100644 --- a/cafe.rb +++ b/cafe.rb @@ -18,10 +18,10 @@ def take_order(menus) menus.each.with_index(1) do |menu, i| puts "(#{i})#{menu[:name]}: #{menu[:price]}円" end - until (order_number ||= -1).between?(0, menus.size - 1) + begin print '>' order_number = gets.to_i - 1 - end + end until order_number.between?(0, menus.size - 1) puts "#{menus[order_number][:name]}(#{menus[order_number][:price]}円)ですね。" order_number end