检查字符串是否等于'*'

时间:2013-04-15 04:59:18

标签: ruby calculator

我正在尝试制作一个基于控制台的计算器来练习一些Ruby,我使用'case'语句来检查控制台参数,然后使用Ruby的算法来解释并返回结果。

我遇到的问题是我无法让Ruby执行与乘法相关的行。它只是转到'else'块并执行我的帮助方法。我有除Exponent之外的所有其他方法我认为Ruby将STAR字符视为'Everything'(我不知道如何说出来)

case @args[1]
when '+'
  puts "#{@args[0].to_i + @args[2].to_i}"
when '-'
  puts "#{@args[0].to_i - @args[2].to_i}"
when '*'
  puts "#{@args[0].to_i * @args[2].to_i}"
when '/'
  puts "#{@args[0].to_i / @args[2].to_i}"
when '%'
  puts "#{@args[0].to_i % @args[2].to_i}"
when '**'
  puts "#{@args[0].to_i**@args[2].to_i}"
else
  help
end

我知道它看起来很狡猾,但我记得一旦我把一切都搞定了,我就会计划修复它。

我对Ruby很新,所以我不能100%确定我需要做些什么让Ruby将这些视为简单的星星,而不是正则表达式......

我向你保证这不是家庭作业,我只是想学习一些Ruby,因为我最近也开始学习Rails。

2 个答案:

答案 0 :(得分:1)

您是否尝试通过编写'\ *'来转义星号?

答案 1 :(得分:0)

还有其他事情要发生。此irb会话确认case语句中的字符串按预期方式工作:

str = '*'
=> "*"
>> case str
>> when '*' then "foo"
>> end
=> "foo"

仔细检查@args[1]实际上是否符合您的想法。