此代码:
my_name = 'Alessandro Tegagni'
my_age = '31'
my_height = '170 '#cm
my_weight = '82 '#kg
my_eyes = 'Brown'
my_teeth = 'White'
my_hair = 'Brown'
puts "let is talk about %s." % my_name
puts "he is %d cm tall." % my_height
puts "he is %d kg heavy." % my_weight
puts "actually that is not too heavy."
puts "he is got %s eyes and %s hair." % [my_eyes,my_hair]
puts "his teeth are usually %s depending on the coffee or tea" % my_teeth
puts "if I add %d, %d, and %d I get %d." % [my_age,my_height,my_weight,my_age+my_height+my_weight]
引发错误:
:17:in `%': invalid value for Integer(): "31170 82 " (ArgumentError)
什么是错误?
问题是,您要定义的变量为字符串。并使用+
对字符串连接它们,这是你与31170 82
看到的。为了解决这个问题,将整数值指派给变量,而不是字符串:
my_name = 'Alessandro Tegagni'
my_age = 31
my_height = 170 #cm
my_weight = 82 #kg
my_eyes = 'Brown'
my_teeth = 'White'
my_hair = 'Brown'
这应该是足以让你的代码正常工作。
排队:
puts "if I add %d, %d, and %d I get %d." % [my_age,my_height,my_weight,my_age+my_height+my_weight]
字符串中的每个符号%d
试图通过应用Integer()
把它解释传递给它的参数。这适用于前三个参数,其可被解释为一个整数(my_age
,my_height
,my_weight
)。但与第四参数my_age + my_height + my_weight
,该值是"31170 82 "
,这不能被解释为整数。这是引发的错误。
该错误是简单地告诉你,你想的东西是不是整数格式内的整数转换。
:17:在'%':为整数()无效值: “31170 82”(引发ArgumentError)
删除的空间将产生一个有效的整数,在这种情况下。