number
is likely a string here, but you are comparing it with an integer.
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
Also, you can use a case/when
statement when you want to take a different path based on multiple values of a single variable. This is usually the cleaner way to handle this type of flow.
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
Or in this case, the even more simple:
number = ARGF.read.chomp.to_i
names = %w{fred betty barney}
puts names[number-1]
should work.