gpt4 book ai didi

ruby - 无法找出 ruby​​ 数学错误。建议?

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:25 25 4
gpt4 key购买 nike

乘法是唯一有效的运算符。其他所有运营商

出于某种原因仍然成倍增加。例如,5+5=25、6-2=12、6/2=12。

看起来好像我所有的运算符在代码中都是正确的,所以我是

不太清楚为什么会这样。

puts "Enter your first Number: "
first_num = gets.to_i

puts "Enter your modifier"
modifier = gets

puts "Enter second number"
second_num = gets.to_i

def add(first_num, second_num)
return first_num + second_num
end

def subtract(first_num, second_num)
return first_num - second_num
end

def multiply(first_num, second_num)
return first_num * second_num
end

def divide(first_num, second_num)
return first_num / second_num
end

case modifier
when +
final_num = add(first_num, second_num)
when -
final_num = subtract(first_num, second_num)
when *
final_num = multiply(first_num, second_num)
when %
final_num = divide(first_num, second_num)
end

puts final_num

最佳答案

gets 返回字符串。更具体地说,gets 返回用户输入的字符串,包括用户按 ENTER 时附加的换行符。

因此,首先使用 gets.chomp 从用户输入中删除新行是有意义的。其次,将 modifiercase block 中包含运算符的字符串进行比较:

puts "Enter your modifier"
modifier = gets.chomp

# ...

case modifier
when '+'
final_num = add(first_num, second_num)
when '-'
final_num = subtract(first_num, second_num)
when '*'
final_num = multiply(first_num, second_num)
when '%'
final_num = divide(first_num, second_num)
end

或者在 case 中插入一个使用散列的重构版本并发送:

OPS = { '+' => 'add', '-' => 'substract', '*' => 'multiply', '%' => 'divide' }
final_num = send(OPS[modifier], first_num, second_num)

实际上,令我惊讶的是 Ruby 没有引发语法错误。

关于ruby - 无法找出 ruby​​ 数学错误。建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56052260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com