Я пишу простую и маленькую программу в Ruby для вывода порядкового номера числа, основанного на пользовательском вводе. Вот что я писал:Ошибка Ruby if/elseif
puts "Enter a number"
number = gets.chomp.to_i
conversion = number % 10
if number == 11 || number == 12 || number == 13
puts "That is #{number}th"
end
if conversion == 1
puts "That is #{number}st"
elsif conversion == 2
puts "That is #{number}nd"
elsif conversion == 3
puts "That is #{number}rd"
else
puts "That is #{number}th"
end
Как мой код показывает, что я хотел взять «номер» из пользовательского ввода, отрезать последний номер, и использовать это единственное число цифр, чтобы определить, действительно ли «номер» следует быть (fir) st, (seco) nd, (thi) rd или (4) -й тип ординала. Значение «конверсия» должно преобразовать это для меня. Однако можно видеть, что номера 11, 12 и 13 являются исключениями. Моя программа работает нормально, за исключением того, когда я входной один из этих трех значений, я получаю два результата, а не один, в терминале, такие как:
That is 11st
That is 11th
Мое намерение состоит в том, что «11» должен отображаться, а не «одиннадцатым ». Несмотря на то, что я пытался написать исключение в свой код, «преобразование» все равно выполняется. Я не уверен, какую ошибку я сделал, но есть ли способ изолировать первый оператор if, чтобы мое преобразование не включало 11, 12 и 13?
'end [...] if conversion == 1' должно быть, должно быть' elsif conversion == 1'. – Biffen