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

如何获取Ruby循环中用户输入数据并计算总和与最大配对和索引

解决Ruby循环输入的总和计算与最大对索引问题

我来帮你梳理下这个问题哈~你的原代码确实会循环5次提问,但每次的输入用完就丢了,根本没法拿来计算总和或者找最大对的索引。咱们可以通过存储用户输入来解决这个问题,具体步骤和代码如下:

核心思路

  1. 用一个数组保存每一轮的两个输入(这样能同时记录每对的关联关系)
  2. 基于存储的数组计算所有输入的总和
  3. 计算每对输入的和,再找到和最大的那一对的索引

修改后的完整代码

numbers = [1, 2, 3, 4, 5]
# 初始化一个数组,用来存储每一轮的两个输入
responses = []

numbers.each do |num|
  puts "Insert q #{num}:"
  qanswer1 = gets.chomp.to_i
  puts "Insert 2nd q for round #{num}:"
  qanswer2 = gets.chomp.to_i
  # 把这一轮的两个输入作为子数组存进去
  responses << [qanswer1, qanswer2]
end

# 计算全部10条回复的总和
total_sum = responses.flatten.sum
puts "Total sum of all 10 responses: #{total_sum}"

# 计算每对输入的和,找到最大和对应的索引
pair_sums = responses.map { |pair| pair.sum }
max_sum = pair_sums.max
max_sum_index = pair_sums.index(max_sum)
# 注意:索引从0开始,如果要显示第N轮,需要加1
puts "The pair with the largest sum is in round #{max_sum_index + 1}, sum is #{max_sum}"

代码解释

  • 存储输入:responses数组会保存5个子数组,每个子数组对应一轮的两个输入,比如[[10,20], [5,15], ...]
  • 总和计算:flatten把二维数组转成一维(比如[10,20,5,15,...]),再用sum直接求和
  • 最大对索引:map遍历每一对计算和,得到pair_sums数组,然后用index找到最大值的位置,最后加1转成用户更容易理解的“第N轮”

这样就能完美实现你要的功能啦~

内容的提问来源于stack exchange,提问作者Karen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:27