我正在创建一个反向抛光符号计算器作为预热测试'为了学校。我几乎把它钉了起来。我遇到的问题是当我自己运行时,我只看到返回的整数(这是期望的)。当我将其插入学校的RSpec检查程序时,它会将数据返回到数组中,因此标记为不正确。
要修复,我刚刚在最后构建了queue.each语句。我在几个不同的位置试过这个,但似乎并不重要。当evaluate返回一个答案时,是否有更大的概念从数组格式中提取我的答案?
class RPNCalculator
def evaluate(string)
holding = []
queue = []
string = string.split(" ").to_a #jam string into an array - break on spaces
string.each do |x|
if x.match(/\d/) #number checker. if true throw it in queue.
queue << x.to_i #convert to number from string
elsif x.match(/\+/) #math operator checker
holding << queue[-2] + queue[-1] #grab queue's last 2 & replace w/ result
queue.pop(2)
queue << holding[-1]
elsif x.match(/\-/)
holding << queue[-2] - queue[-1]
queue.pop(2)
queue << holding[-1]
elsif x.match(/\*/)
holding << queue[-2] * queue[-1]
queue.pop(2)
queue << holding[-1]
else
end
end
return queue.each { |x| puts x.to_i} # by [-1] in string, queue holds answer
end
end
提前感谢您的时间,
答案 0 :(得分:0)
您的方法(没有queue.each
)返回string.each
的结果。
如果您想返回queue
,则需要执行。
class RPNCalculator
def evaluate(string)
holding = []
queue = []
string = string.split(" ").to_a #jam string into an array - break on spaces
string.each do |x|
#...
end
queue[0] # return the final result, stored in queue
end
end