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

Ruby循环结合用户输入:员工薪资统计程序开发技术求助

搞定Ruby多员工薪资计算程序的循环逻辑

嘿,我来帮你把这个多员工输入的逻辑补全,顺便把整个程序的核心功能都实现好!你的基础代码已经有了单员工的输入,现在只需要把这些步骤放进循环里,再用数组来存储所有员工的数据,最后就能轻松算出你要的各种信息啦。

完整实现代码

# 初始化数组存储所有员工数据
employees = []

loop do
  # 收集员工基本信息
  puts "Name of your employee"
  name = gets.chomp!

  puts "How much does #{name} make per hour?"
  # 转成浮点数,支持时薪是小数的情况
  hourly_wage = gets.chomp!.to_f

  puts "How many hours does #{name} work per day?"
  daily_hours = gets.chomp!.to_f

  # 计算年薪资和年总工时(假设一年工作250天,你可以根据实际调整这个数值)
  annual_days = 250
  annual_salary = hourly_wage * daily_hours * annual_days
  annual_total_hours = daily_hours * annual_days

  # 把员工信息存入数组
  employees << {
    name: name,
    hourly_wage: hourly_wage,
    daily_hours: daily_hours,
    annual_salary: annual_salary,
    annual_total_hours: annual_total_hours
  }

  # 询问是否继续输入下一个员工
  puts "Do you have another employee you would like to enter? (yes/no)"
  continue = gets.chomp!.downcase
  # 如果输入no或n,退出循环
  break if continue == "no" || continue == "n"
end

# 输出所有员工的年薪资
puts "\n--- 所有员工年薪资信息 ---"
employees.each do |emp|
  puts "#{emp[:name]} 的年薪资为: $#{emp[:annual_salary].round(2)}"
end

# 找出工作量最多的员工(按年总工时计算)
most_hours_employee = employees.max_by { |emp| emp[:annual_total_hours] }
puts "\n--- 工作量最多的员工 ---"
puts "#{most_hours_employee[:name]} 年总工时为 #{most_hours_employee[:annual_total_hours]} 小时"

# 找出薪资最高的员工
highest_salary_employee = employees.max_by { |emp| emp[:annual_salary] }
puts "\n--- 薪资最高的员工 ---"
puts "#{highest_salary_employee[:name]} 年薪资为 $#{highest_salary_employee[:annual_salary].round(2)}"

关键逻辑说明

  • 循环输入:用loop创建一个无限循环,直到用户输入no或n时,通过break退出循环,这样就能支持任意数量的员工输入。
  • 数据存储:用数组+哈希的方式存储每个员工的完整信息,方便后续计算和查询。
  • 数值转换:把用户输入的时薪和工时转成float类型,避免字符串运算导致错误,同时支持小数数值。
  • 最大值查询:用Ruby内置的max_by方法,一行代码就能找出年总工时最多和年薪资最高的员工,简洁高效。
  • 格式优化:用round(2)把薪资保留两位小数,输出更符合货币格式的规范。

你可以根据实际需求调整annual_days的数值(比如有些公司是260工作日),或者添加更多员工信息的收集项,这个结构扩展性很强哦!

内容的提问来源于stack exchange,提问作者N.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:09:44