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

Ruby 实现终端交互创建学生名单数组的代码问题求解

Ruby 终端输入生成数组实现方案

你确实需要使用循环来实现不限次数的用户输入采集,修正后可直接运行的完整代码如下:

students = []

# 采集第一个学生姓名
puts "Type a student name:"
name = gets.chomp
students << name

# 循环采集后续姓名,直到用户输入为空
loop do
  puts "Type another student name or press enter to finish:"
  name = gets.chomp
  break if name.empty?
  students << name
end

# 按示例要求反转输入顺序
students = students.reverse

# 处理输出格式,匹配预期的姓名拼接规则
student_count = students.size
if student_count == 1
  name_str = students.first
elsif student_count == 2
  name_str = students.join(' and ')
else
  name_str = students[0...-1].join(', ') + " and " + students.last
end

puts "Congratulations! Your Wagon has #{student_count} students:"
puts name_str

代码说明

  • 不需要手动维护count计数变量,直接用数组的size方法即可获取元素个数,避免计数错误
  • 使用loop循环重复采集后续输入,只要用户输入不为空就存入数组,输入为空时跳出循环,适配任意数量的姓名输入
  • 输出部分单独处理了不同人数下的姓名拼接逻辑,完全匹配你给出的预期运行效果
  • 如果是在Rails环境下,你可以直接调用students.to_sentence方法实现相同的拼接效果,不需要手动写判断逻辑

原代码问题说明

你现有的代码没有使用循环,只能处理最多2次用户输入,无法支持3个及以上的姓名采集。同时else分支的逻辑只处理了1次额外输入就直接输出结果,不管后续用户是否还有输入需求,不符合功能要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:45:03