类型错误 - 没有从nil到整数的隐式转换 - 创建数组

时间:2015-01-02 11:19:16

标签: ruby arrays type-conversion user-input

我是Ruby的新手。我正在尝试通过制作小程序来学习注意事项。这个程序有点多余,但我想用语言的语法来改善自己。

无论如何,所以我正在尝试创建一个小程序,它会向用户询问一定数量的人。然后,这一数量的人将引用数组的大小,然后程序将要求用户输入数组中每个元素的名称(由于新数组的元素将为空,因此ALL为“nil”值)。最后,我想将数组打印回控制台以查看已完成的元素。

但是,我收到一条错误,说“第10行:发生了类型错误。没有从nil到整数的隐式转换”。我的代码不是100%完成的。我还在尝试添加更多东西,但是我想在我做这个之前先解决这个错误。有谁愿意帮助我吗?

这是代码

def Array_Maker 
  puts "How many people would you like to enter? : "
    num = gets.chomp.to_i

    nameArray = Array.new(num)

  puts "\nEnter the names of the people you wish to add: "

    nameArray.each do |x|
    nameArray[x] = gets.chomp.to_s
  end

    nameArray.each do |x| 
      puts x
  end
end  

Array_Maker()

我可能做错了,但我正在努力......

2 个答案:

答案 0 :(得分:1)

nameArray.each do |x|在此循环中,x被赋予数组的值nil

试试这个。

for i in 0..num do
  nameArray[i] = gets.chomp.to_s
end

答案 1 :(得分:1)

nameArray.each do |x|遍历数组,x设置为每个索引处数组的

更好的方法可能是使用map方法构建数组。像这样:

def array_maker 
  puts "How many people would you like to enter? : "
    num = gets.chomp.to_i
  puts "\nEnter the names of the people you wish to add: "

  nameArray = num.times.map do
    gets.chomp.to_s
  end

  nameArray.each do |x| 
    puts x
  end
end  

array_maker()