私はRubyの演習で数字を取り、同等の単語を返すことに取り組んでいます。以下は、私が取り組んでいる if ステートメントを含む関数のコードです。エラーの場所を追跡できるように、さまざまな文字列を配置しました。
最初の 3 つの条件は、意図したとおりに機能しているようです。ただし、「puts The teens translator works」を返す条件は、渡した数値の条件を満たしていないにもかかわらず、どういうわけか真です。
私が言いたいことを説明するために、私が渡してきた数字のいくつかを含めました。私の意図は、数値が 13 より大きいが 20 未満であり、10 で割り切れず、11、12、13、または 15 でない場合に条件が真になることです。たとえば、41 を渡すと、条件は次のようになります。 「The teens translator works」が出力されるため、true です。シンプルなものが欠けているような気がします。
よろしくお願いします。
def in_english
if @number == 11 || @number == 12 || @number == 13 || @number == 15
puts "The number is 11, 12, 13 or 15"
elsif (@number >0 && @number < 10)
puts "Hello I made it hear"
elsif (@number >= 10 && @number < 100 && @number%10 == 0)
puts "The number is greater than equal 10 & < 100 and divisible by 10"
elsif ((@number > 13 && @number < 20 ) && @number%10 != 0 && @number != 11 || @number != 12 || @number != 13 || @number != 15)
puts "The teens translator works"
elsif (@number > 20)
puts "Over twenty_trans"
else
puts "End of if block"
end
end
Say.new(47).in_english
Say.new(41).in_english
Say.new(52).in_english