-1

我试图制作一个简单的程序来询问用户几个问题。

我希望程序假设用户来自美国,但如果用户在公制系统中给出答案,则转换度量。这是代码:

    print "How old are you?"
    age = gets.chomp()

    print "Ok, how tall are you?"
    height = gets.chomp()
    if height.include? "centimeters"
        height = height * 2.54
    else
        height = height

    print "How much do you weigh?"
    weight = gets.chomp()
    if weight.include? "kilograms"
        weight = weight / 2.2
    else
        weight = weight 

    puts "So, you're #{age} years old, #{height} tall and #{weight} pounds heavy."

我运行了代码,一切正常。我能够输入我所有的数据,直到我得到关于重量的最后一点。我通过输入 90 公斤对其进行了测试,但收到以下错误消息:

ex11.rb:15:in `<main>': undefined method `/' for "90 kilograms":String (NoMethodError)

看起来它不接受我的除法运算符。有谁知道这里有什么?

4

2 回答 2

4

从概念上讲,您的方法有很多问题:第一件事: "1 centmeter" * 2虽然 "1 centmeter1 centmeter" 在语法上是正确的,但我很确定那不是您想要的。

试试这个(这会拒绝输入中除整数之外的所有内容):

print "How old are you?"
age = gets.chomp()

print "Ok, how tall are you?"
height = gets.chomp()
if height.include? "centimeters"
    height = height.gsub(/[^0-9]/,"").to_i * 2.54
else
    height = height

print "How much do you weigh?"
weight = gets.chomp()
if weight.include? "kilograms"
    weight = weight.gsub(/[^0-9]/,"").to_i / 2.2
else
    weight = weight 

----- EDIT ---- "1 centimer".to_i结果"1 centimeter".gsub(\[^1-9]\,"")都是 1。Ruby 非常聪明,所以我想你可以忽略 gsub 部分。

于 2013-08-23T03:40:23.463 回答
0

您需要将“权重”从字符串转换为整数或双精度。

于 2013-08-23T03:35:22.443 回答