Крис Пайн Учимся программировать на Ruby Ch 8: разложим по алфавиту ваш массив - PullRequest
0 голосов
/ 21 декабря 2011

Застревание в главе 8:

Введите столько слов, сколько мы хотим Одно слово в строке, продолжая, пока мы просто не нажмем Enter на пустой строке Повторяет слова обратно к нам в алфавитном порядке. Используйте 'sort'

Итак, вот что я получил, но у меня возникли забавные проблемы с тем, что я не могу получить первое слово в массив [среди прочего]

# alphabetting

puts 'Tell us some of your favorite things!'

# create an array
words = []

while gets.chomp != ''
  words.push gets.chomp
  words.sort
    puts words 
end

Сделал ли это, и теперь это работает ... Должен ли я иметь "вещь" там, хотя? Кажется капризным назначать в цикле while.

puts 'Tell us some of your favorite things!'

words = []
puts words

while (thing = gets.chomp) != ''
  words.push thing
end

puts words.sort 

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Попробуйте это:

puts 'Tell us some of your favorite things!'

words = []
while line = STDIN.gets
  line = line.chomp
  break if line.empty?
  words << line.chomp
end

words = words.sort

words.each {|word| puts word }
0 голосов
/ 21 декабря 2011

Ваш первый gets звонок ни на что не ссылается и отбрасывается. Это не просто первое слово, но любое другое слово, которое будет выброшено. Процедура вывода также должна быть вне цикла. Исправление:

words = []
while word = gets.chomp and not word.empty?
  words.push(word)
end
puts words.sort
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...