我计算用户将在Ruby中输入的3个数字的平均值。每次我运行应用程序时,用户输入3个数字,但我收到错误声明:
test.rb:7:
<main>': undefined method
/&#39; for&#34; 23 \ n23 \ n24 \ n&#34;:String(NoMethodError)
我的代码如下:
puts "Enter first"
num1 = gets
puts "Enter second"
num2 = gets
puts "Enter third"
num3 = gets
avg = (num1 + num2 + num3) / 3
puts "Average is " + avg
答案 0 :(得分:4)
试试这个:
puts "Enter first"
num1 = gets.to_i
puts "Enter second"
num2 = gets.to_i
puts "Enter third"
num3 = gets.to_i
avg = (num1 + num2 + num3) / 3.0
puts "Average is #{avg}"
首先,您需要从gets方法中删除换行符,并通过调用.to_i
将字符串转换为整数。然后,要正确输出平均值,只需使用字符串插值。
答案 1 :(得分:0)
我对Ruby一无所知,但如果它与Python类似,则必须将从字符串中获得的输入转换为整数。现在你的程序只是连接你输入的字符串,并且因为你不能在字符串上使用/
而感到困惑。
编辑:您必须在输入上使用方法.to_i
将其转换为整数。
答案 2 :(得分:0)
gets
会返回String
,而非数字。因此,您需要先调用to_i
。
此外:要返回Float
您的计算需要在/
的左侧或右侧有浮点值,否则它将返回Integer
(可能是意外的) ):
(1 + 1 + 2) / 3
#=> 1
(1 + 1 + 2) / 3.0
#=> 1.3333333333333333
将您的代码更改为:
puts "Enter first"
num1 = gets.to_i
puts "Enter second"
num2 = gets.to_i
puts "Enter third"
num3 = gets.to_i
avg = (num1 + num2 + num3) / 3.0
puts "Average is #{avg}"