I am trying to accept input of two integers, separated by a space: 3 5
and save that into an integer array. I do this 3 times, but I am having trouble converting this from string to integers. Here is my loop:
for i in 1..3
puts "What is point " + i.to_s + " ?" # asks for input
s.push gets.split(" ")
end
Then, I want to have
if s[1][0] - s[0][0] = 0
blah blah blah
end
The array s
currently looks like
------------
| "1" "2" |
| "3" "4" |
| "5" "6" |
------------
I want it to look like
--------
| 1 2 |
| 3 4 |
| 5 6 |
--------
I have tried gets.split(" ").map { |s| s.to_i }
and gets.split(" ").collect{|i| i.to_i}
but I realize I should just ask someone here.
I have just started learning Ruby, so if you don't mind a short explanation with the solution, i would really appreciate it :)
Thanks!
Note: This is pretty much the opposite of this question, and I did try to use .collect
and .map
following the loop, which still did not work.
s
? If you are using an older version of ruby, you should try<<
instead ofpush
, ex:s << gets.split(' ')
. Your code as it is works as you want it to on my computer. – Adrian Jul 26 '10 at 2:08gets.split(" ").map { |s| s.to_i }
instead of justgets.split(" ")
is producing arrays of integers. – Adrian Jul 26 '10 at 2:13map { |i| i.to_i }
, would that have caused it to fail for some reason? I was previously gettingundefined method 'to_i' for ["1", "2"]:Array
– Paul Hoffer Jul 26 '10 at 2:19