J'essaie d'accepter l'entrée de deux entiers, séparés par un espace: 3 5
et de le sauvegarder dans un tableau d'entiers. Je le fais 3 fois, mais j'ai du mal à convertir ceci en chaîne en entiers. Voici ma boucle:Ruby - problèmes avec l'entrée de l'utilisateur dans le tableau d'entiers
for i in 1..3
puts "What is point " + i.to_s + " ?" # asks for input
s.push gets.split(" ")
end
Ensuite, je veux avoir
if s[1][0] - s[0][0] = 0
blah blah blah
end
Le tableau s
ressemble actuellement
------------
| "1" "2" |
| "3" "4" |
| "5" "6" |
------------
Je veux qu'il ressemble
--------
| 1 2 |
| 3 4 |
| 5 6 |
--------
J'ai essayé gets.split(" ").map { |s| s.to_i }
et gets.split(" ").collect{|i| i.to_i}
mais je me rends compte que je devrais demander à quelqu'un ici.
Je viens de commencer à apprendre Ruby, donc si vous ne me dérange pas une brève explication avec la solution, je voudrais vraiment l'apprécier :)
Merci!
Note: C'est à peu près le contraire de this question, et j'ai essayé d'utiliser .collect
et .map
après la boucle, qui ne fonctionnait toujours pas.
Que * est * stocké dans 's'? Si vous utilisez une ancienne version de ruby, vous devriez essayer '' '' au lieu de 'push', ex:' s << gets.split ('') '. Votre code tel qu'il est fonctionne comme vous le souhaitez sur mon ordinateur. – Adrian
Actuellement stocké est le tableau que je veux, mais stocké en tant que chaînes. J'utilise Ruby 1.9.1. (J'ai aussi édité la question originale) –
J'utilise aussi 1.9.1, et votre code exact (avec 'gets.split (" ") .map {| s | s.to_i}' au lieu de simplement 'gets.split ("")) est en train de produire des tableaux d'entiers – Adrian