Ruby 如何使第二个elsif语句起作用

Ruby 如何使第二个elsif语句起作用,ruby,Ruby,我正在从C转换为F,反之亦然。我的代码是: puts "Please input temperature" data = gets.chomp.to_i sign = "C" and "F" Myclass = Class.new do puts sign end if sign == "C" puts data + 1.8 + 32 elsif sign == "F" puts (data - 32) * 0.55 end 如果我没有将带有的数据附加到\u I,我会得到一个错误

我正在从C转换为F,反之亦然。我的代码是:

puts "Please input temperature"
data = gets.chomp.to_i
sign = "C" and "F"
Myclass = Class.new do
  puts sign
end
if sign == "C"
  puts data + 1.8 + 32
elsif sign == "F"
  puts (data - 32) * 0.55
end 
如果我没有将带有
的数据附加到\u I
,我会得到一个错误:

8:in +': no implicit conversion of fixnum into string

我认为下面是一个详细的半代码形式。你的问题是你有一个C或F的输入,和一个C或F的期望输出。因此你需要参数化这个选择,并将它滚动到一个函数中。
num
是您调用的
data
变量。当然,您可以更简洁地执行此操作,或者实际上不必使用
elsif
,但我不是在假设您如何获得该值-如果它作为用户输入输入,那么简单的
else
检查可能会导致错误地命中默认条件

希望这是有道理的

def convert(num, input_sign, desired_output_sign)
  output_string = ""

  if (input_sign == "C" && desired_output_sign == "F")
    # do conversion to value
    value = <your conversion code>
    output_string << "#{value}F"
  elsif (input_sign == "F" && desired_output_sign == "C")
    # do conversion to value
    value = <your conversion code>
    output_string << "#{value}C"
  end

  output_string
end
def convert(数值、输入符号、所需输出符号)
输出_字符串=“”
如果(输入符号==“C”&期望的输出符号==“F”)
#进行价值转换
值=

输出字符串“第二个”elsif语句如何工作?我只看到一个。对不起,我是说一个elsif声明。如果要重新措辞,如果我的输入是50F,我怎么能附加到它上面呢?例如,因为现在不管我是写50C还是50F,它仍然会执行“If”语句。
get
返回一个字符串作为屏幕输入,而这里您似乎在假设数字输入。您的类当前是多余的,不清楚您所说的
elsif
不工作是什么意思。目前,您的符号表达式每次都将计算为
“C”
,如果这是您的意思的话。那么,如果我愿意,我如何将其计算为“F”?基本上我需要的是:如果用户输入为50C,它将执行if语句,但是如果输入为50F,它将执行elsif语句⇒ “F”公式包含一个错误。人们应该在那里乘以
1.8
0.55*
是一个相当粗略的近似值。你应该改用
(deg.to_f-32)/1.8
。@Stefan我不知道它的用意,也许它被损坏了?我只是复制粘贴的计算结果。“我正在从C转换为F,反之亦然”。此外,新手想要故意使用错误代码的可能性有多大?你们已经修好了“+”:-)谢谢你们的时间和帮助,是的,我的公式有点失控了。
data = gets.chomp.downcase
deg, meas = data.split(/(?=[cf])/)
case meas
when 'c' then puts 1.8 * deg.to_f + 32
when 'f' then puts (deg.to_f - 32) / 1.8
else puts 'Wrong input. Please enter smth like “50C”'
end