我想在用户从键盘输入/输入"1"
时添加两个数字,在用户按下"2"
时减去,并在用户按下"3"
时相乘。
def add(x,y)
return x + y
end
def sub(x,y)
return x - y
end
def multiply(x,y)
return x * y
end
puts"Enter a First Number"
num1=gets.chomp
puts"Enter a Second Number"
num2=gets.chomp
puts"Press 1,2 or 3 from your keyboard"
choice=gets.chomp
if choice == "1"
puts(num1,"+",num2, "=", add(num1,num2))
elsif choice == "2"
puts(num1,"-",num2,"=",sub(num1,num2))
elsif choice == "3"
puts(num1,"*",num2,"=",multiply(num1,num2))
else
puts"Invalid Input/Choice"
end
gets
我的代码中有一些错误。当我按"1",
时,我会像这样输入:
first number=2
second number=3
但结果是2 + 3 = 23,而实际应该是2 + 3 = 5。减法和乘法也有一些误差。如果,任何人都可以解决这个问题,那么我会很高兴。
答案 0 :(得分:3)
@notulysses已经为您提供了正确的解决方案。我只想说明你是如何得到23
> "2" + "3" # as string
=> "23"
> "2".to_i + "3".to_i # convert string to integer
=> 5
除了你的观点:
减法和乘法也有一些错误
因为减法和乘法不能对String执行。这就是你收到错误的原因:让我告诉你:
> "2" - "3"
# NoMethodError: undefined method `-' for "2":String
> "2" * "3"
# TypeError: no implicit conversion of String into Integer
如果使用to_i
方法将用户输入从字符串转换为整数,您将获得正确的结果,并且您不会收到任何错误。 :)
答案 1 :(得分:1)
您应该应用.to_i
将用户的输入转换为整数(gets.to_i
),否则将它们视为字符串,并且在+
运算符连接的情况下(在其他情况下)您应该收到有关undefined method
和no implicit conversion of String into Integer
)的错误。