2017-02-21 76 views
-1

爲什麼不能正常工作。我試圖重構可能使用的字符數最少的代碼..三元運算符如果... elsif ... else嘗試紅寶石

for i in 1..200         # 33 
if (i%3 == 0)          # 34 
    if (i%5 == 0) ? puts "FizzBuzz" : puts 'Fizz' # 35 
    end            # 36 
elsif (i%5 == 0) ? puts "FizzBuzz"    # 37 
    if (i%3 == 0)         # 38 
    else puts "Buzz"        # 39 
    end            # 40 
else puts i          # 41 
end            # 42 
end            # 43 
+0

什麼是你的錯誤 –

+0

'numberGame.rb:35:語法錯誤,意外的tSTRING_BEG,期待keyword_do或'{'或'(' if(i%5 == 0)?放入「FizzBu​​zz」:放入'Fizz'' - 這是5個錯誤中的第一個 – Mohammad

+0

當使用'if'時,該操作應該在'if'/'elif'/'else'行和'end'之間。除了與三元運算符相關的錯誤之外,還會出現其他錯誤 – grail

回答

1

使用puts i%5 == 0 ? "FizzBuzz" :'Fizz'

,而不是if (i%5 == 0) ? puts "FizzBuzz" : puts 'Fizz'

這樣做對所有這些陳述

2

如果你想使用嵌套if-else您可以使用

(1..200).each do |num| 
    if (num%3 == 0 && num%5 == 0) 
    puts "BucksFizz" 
    elsif num%3 == 0 
    puts "Bucks" 
    elsif num%5 == 0 
    puts "Fizz" 
    elsif 
    puts num 
    end   
end 
+0

。 –