0

编码新手,不确定我在这里做错了什么。这就是我到目前为止所拥有的:

put "Enter degrees in Celsius:"
Celsius = gets.chomp

def celsius_to_fahrenheit (c)

fahrenheit = (c * 9/5)+32
end

puts "The temperature is #{celsius_to_farenheit (Celsius)} in Farenheit"
4

2 回答 2

1

这里是固定的:

puts "Enter degrees in Celsius:"
celsius = gets.chomp

def celsius_to_fahrenheit(c)

        fahrenheit = (c.to_f * 9/5)+32
end

puts "The temperature is #{celsius_to_fahrenheit(celsius)} in Farenheit"
  1. 函数调用不正确celsius_to_farenheit
  2. 错误调用的函数put(应该是puts
  3. c是一个字符串,而不是一个 int / float。无法对字符串进行数学运算
  4. 摄氏大写。那是不好的形式。以大写字母开头的变量通常表示一个类。这不是“错”,而是错了。

总的来说,你最大的错误是没有阅读你的错误日志。当您运行该程序时,它会输出错误指示您的错误。您应该一一修复错误,直到您的程序编译/运行。不要只是随机修复错误。阅读消息,想想你做了什么以及你想要做什么,然后修复错误。

Traceback (most recent call last):
test.rb:1:in `<main>': undefined method `put' for 
main:Object (NoMethodError)
Did you mean?  puts
               putc

这意味着您试图在文件顶部调用一个函数(错误的 put 函数)。

Traceback (most recent call last):
test.rb:9:in `<main>': undefined method 
`celsius_to_farenheit' for main:Object (NoMethodError)
Did you mean?  celsius_to_fahrenheit

相同的症状,不同的疾病。

Traceback (most recent call last):
    1: from test.rb:9:in `<main>'
test.rb:6:in `celsius_to_fahrenheit': 
undefined method `/' for "666666666":String (NoMethodError)

看看它如何告诉我我需要知道的一切?

我将该“c”值转换为浮点数。默认情况下,用户的输入应被解释为字符串。如果您希望用户的输入被解释为浮点数而不是字符串,则必须将变量“转换”(转换)为浮点数。

您看到的原因666666666是因为 Ruby 试图变得花哨。如果你将一个字符串乘以一个整数 N,你会得到该字符串重复 N 次。

例如。"hello world" * 2 # hello worldhello world

于 2019-04-05T22:51:36.913 回答
0

这就是代码应该的样子。

puts "Enter degrees in Celsius:"
Celsius = gets.chomp.to_f

def celsius_to_farenheit (c)
fahrenheit = (c * 9/5)+32
end

puts "The temperature is #{celsius_to_farenheit (Celsius)} in Farenheit"

你正在做一些错误

  1. 定义它然后调用它时的函数名称是不同的。它们应该完全相同。您将其定义为“celsius_to_fahrenheit”,但将其称为“celsius_to_farenheit”
  2. 您实际提供的运行时输入 (gets.chomp) 是一个字符串。因此,使用“.to_f”将其转换为浮点数。当您像我一样将它分配给变量(摄氏度)时,甚至在将参数传递给函数时,您都可以这样做
  3. 您在第一行错误地调用了 put 而不是 puts
于 2019-04-05T23:07:06.543 回答