首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >很难计算出红宝石的数学错误。建议?

很难计算出红宝石的数学错误。建议?
EN

Stack Overflow用户
提问于 2019-05-09 04:35:05
回答 2查看 91关注 0票数 1

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

仍因某种原因而倍增。例如,5+5=25,6-2=12,6/2=12.

看起来我的所有操作符在代码中都是正确的,所以我是。

不太清楚为什么会发生这种事。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-09 04:39:20

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

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

代码语言:javascript
复制
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块中嵌入使用散列和send的重构版本。

代码语言:javascript
复制
OPS = { '+' => 'add', '-' => 'substract', '*' => 'multiply', '%' => 'divide' }
final_num = send(OPS[modifier], first_num, second_num)

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

票数 3
EN

Stack Overflow用户

发布于 2019-05-09 13:56:27

" "放在operators周围--在statements.So大小写修饰符中,当"+" etc .gets将事物保存为string时,则将修饰符保存为string

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56052260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档