乘法是唯一有效的运算符。所有其他算子
仍因某种原因而倍增。例如,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发布于 2019-05-09 04:39:20
gets返回字符串。更具体地说,gets返回用户输入的字符串,包括当用户按ENTER时追加的行中断。
因此,首先使用gets.chomp从用户输入中删除新行是有意义的。其次,将modifier与case块中包含运算符的字符串进行比较:
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的重构版本。
OPS = { '+' => 'add', '-' => 'substract', '*' => 'multiply', '%' => 'divide' }
final_num = send(OPS[modifier], first_num, second_num)实际上,我很惊讶Ruby没有引发语法错误。
发布于 2019-05-09 13:56:27
将" "放在operators周围--在statements.So大小写修饰符中,当"+" etc .gets将事物保存为string时,则将修饰符保存为string。
https://stackoverflow.com/questions/56052260
复制相似问题