number
, вероятно, здесь строка, но вы сравниваете ее с целым числом.
1 == '1' # false
try
number = ARGF.read.chomp.to_i # note the to_i here
names = %w{fred betty barney}
if number == 1
puts names[0]
elsif number == 2
puts names[1]
elsif number == 3
puts names[2]
end
Также вы можете использовать case/when
оператор, когда вы хотите выбрать другой путь, основанный на нескольких значениях одной переменной.Обычно это более чистый способ обработки этого типа потока.
number = ARGF.read.chomp.to_i
names = %w{fred betty barney}
case number
when 1
puts names[0]
when 2
puts names[1]
when 3
puts names[2]
end
Или в этом случае еще более простой:
number = ARGF.read.chomp.to_i
names = %w{fred betty barney}
puts names[number-1]
должен работать.