-1

何らかの理由で、このコードは、「cm」または「in」のどちらを入力したかに関係なく、常にb(2.54) を乗算します。unit_number

puts "Welcome to my unit conversion calculator. This calculator can convert
between Centimeters and Inches. If you could like to convert Centimeters to Inches, write: in. If you would like to convert Inches to centimeters, write: cm."

unit = gets.to_s

puts " how many of your unit would you like to convert"
unit_number = gets.to_f

a = 0.39370079
b = 2.54

if unit == 'in'      
  puts "your conversion is: #{ (unit_number * a)}"    
else unit == 'cm'
  puts "your conversion is: #{ (unit_number * b)}"
end
4

3 に答える 3

1

実際に必要なelseものがステートメントである場合、条件はステートメントを呼び出します。elsif

elsif unit == 'cm'

基本的に、現在あなたが抱えているのは、最初の条件 (つまりif unit == 'in') が満たされていない状況です (理由については、 Pablo B の回答を参照してください)。ただし、ステートメントであるため、2 番目の条件満たされます。else最初の条件は常に false であるため、else条件は常に true になります。

代わりに、ステートメントを呼び出すelsifと、条件は最初に以下をチェックしunit == 'in'ます。そうでない場合は、 かどうかをチェックしますunit == 'cm'。どちらも真でない場合、条件は を返しnilます。

于 2013-09-09T00:09:22.777 に答える
0

私はあなたがどのように感じているかを正確に知っています。デバッグは苦痛です。@akhanubis は、戻り値#chompを処理するために必要なメソッドをすでに指摘しています。getsあなたは教訓的な目的でコードを書いたと思いますが、物理単位を real に変換する必要がある場合は、 sy gemをインストールしてください。の後gem install sy、次のことができます。

require 'sy/imperial'

7.5.inch.in :cm
#=> 19.05
42.cm.in :inch
#=> 16.5354
于 2013-09-09T02:36:41.863 に答える