You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

操作正确性确认及Ruby代码功能异常问题技术咨询

你的Ruby代码问题分析及修正方案

嘿,我来帮你梳理下这段代码里的问题,还有操作上的调整建议:

代码里的几个问题

  • 变量搞混啦:你定义了pizza = "2.99"存价格,但后面计算的时候却用food_type.to_f——food_type是用户输入的食物名称(比如"pizza"),转成浮点数会变成0.0,完全不是你要的价格,应该用pizza这个变量才对。
  • 语法错误:最后一行puts #{food_amount.to_i * food_type.to_f}写法不对,Ruby里字符串插值必须把表达式放在双引号里,正确格式是puts "#{表达式}"。
  • 没必要的!:food_amount = gets.chomp!里的chomp!是修改原字符串的方法,这里用普通的chomp就足够了,!在这里纯属多余,还容易养成不好的编码习惯。
  • 没做输入校验:如果用户输入的数量不是数字,to_i会直接返回0,结果肯定不对,最好加个校验确保输入是有效数字。

修正后的代码(更健壮哦)

# 可以扩展成多种食物的价格表,方便后续添加
food_prices = { "pizza" => 2.99, "burger" => 3.99 }

puts "Hello, what would you like to buy?"
food_type = gets.chomp.downcase

# 先检查用户要的食物有没有
unless food_prices.key?(food_type)
  puts "Sorry, we don't have #{food_type} available right now."
  exit
end

puts "How many?"
food_amount_input = gets.chomp

# 校验输入是不是有效数字
unless food_amount_input.match?(/^\d+$/)
  puts "Oops, please enter a valid number."
  exit
end

# 计算总价并格式化输出
food_amount = food_amount_input.to_i
total_price = food_amount * food_prices[food_type]
puts "Your total is $#{sprintf("%.2f", total_price)}"

操作正确性说明

你的核心思路是对的:先问食物类型、再问数量,最后算总价,但实现细节上出了点小问题,按照上面的修正调整后,代码就能正常运行,还能处理一些异常输入的情况哦~

内容的提问来源于stack exchange,提问作者Arjun Micah Tayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:00:16