我在Ruby中的数学函数上遇到字符串错误

时间:2017-10-13 06:23:34

标签: ruby

这是一个与工作相关的小程序:

#get refractive index
print "What is the surrounding refractive index?"
n = gets.chomp
puts n.to_f 
#get refractive index of the lens
print "What is the refractive index of the lens?"
n1 = gets.chomp
puts n1.to_f 
print "What is the radius of curvature of the lens?(mm)"
r= gets
puts r.to_f
F= (n1-n)/r
print "F={F}D"

这是一个错误:

undefined method `-' for "1.523":String
Did you mean?  -@
(repl):12:in `<main>'

这是什么意思?

1 个答案:

答案 0 :(得分:1)

  

undefined method '-' for "1.523":String

     这是什么意思?

这意味着,你不能用字符串做数学。

puts n.to_f

这条线毫无意义。首先将字符串n转换为浮点数,然后立即将puts转换回字符串进行打印。 (与此同时,n本身永远不会被触及/修改。它仍然是一个字符串。)

一旦得到它,就立即将输入转换为浮点数。

n = gets.chomp.to_f

或者,因为to_f会忽略尾随换行符,您可以省略chomp

n = gets.to_f