【发布时间】:2011-03-20 21:32:36
【问题描述】:
我正在尝试接受两个整数的输入,用空格分隔:3 5 并将其保存到整数数组中。我这样做了 3 次,但我无法将它从字符串转换为整数。这是我的循环:
for i in 1..3
puts "What is point " + i.to_s + " ?" # asks for input
s.push gets.split(" ")
end
那么,我想拥有
if s[1][0] - s[0][0] = 0
blah blah blah
end
数组s当前看起来像
------------
| "1" "2" |
| "3" "4" |
| "5" "6" |
------------
我希望它看起来像
--------
| 1 2 |
| 3 4 |
| 5 6 |
--------
我尝试过gets.split(" ").map { |s| s.to_i } 和gets.split(" ").collect{|i| i.to_i},但我意识到我应该在这里问人。
我刚刚开始学习 Ruby,所以如果您不介意对解决方案进行简短说明,我将不胜感激 :)
谢谢!
注意:这与this question 几乎相反,我确实尝试在循环之后使用.collect 和.map,但仍然不起作用。
【问题讨论】:
-
s中存储了什么?如果您使用的是旧版本的 ruby,您应该尝试使用<<而不是push,例如:s << gets.split(' ')。您的代码可以在我的计算机上按您希望的方式运行。 -
当前存储的是我想要的数组,但存储为字符串。我正在使用 Ruby 1.9.1。 (我还编辑了原始问题)
-
我也在使用 1.9.1,而您的确切代码(使用
gets.split(" ").map { |s| s.to_i }而不仅仅是gets.split(" ")正在生成整数数组。 -
我现在可以使用了,谢谢。那很奇怪。我想在我可能拥有
map { |i| i.to_i }之前,这会导致它由于某种原因而失败吗?我以前收到undefined method 'to_i' for ["1", "2"]:Array -
@phoffer:我不这么认为,也许吧。
标签: ruby arrays multidimensional-array type-conversion