我正在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
由於我的代碼所示,我想採取從用戶輸入的「數字」,切斷最後一個號碼,並使用單位數字,以確定是否「數字」應是(冷杉)st,(seco)nd,(th)rd或(四)th類型的序數。 「轉換」值應該轉換爲我。但是,可以看出,數字11,12和13是例外。除了我的程序工作正常,當我輸入這三個值中的一個,我得到兩個結果,不是一個,在終端,如:
That is 11st
That is 11th
我的本意是,「十一」應顯示,而不是「第11 」。儘管我試圖在我的代碼中寫入異常,但「轉換」仍然得到執行。我不確定我做了什麼錯誤,但有沒有辦法可以隔離第一條if語句,以便我的轉換不包括11,12和13?
'end [if] conversion == 1' should be be'elsif conversion == 1'。 – Biffen