0

到目前为止我有

puts "Enter a calculation: "

calc = gets.chomp

def add(a, b)
   puts a + b
end

puts add(calc)

现在我很惭愧地承认,但我很难过,我已经尝试过编写 add 方法等......但我似乎无法解决这个问题来计算和输出正确的结果。

为了简化这一点,我怎样才能获得添加工作的能力?

IE用户输入计算(2个整数),程序添加计算,程序输出结果,程序要求另一个计算。

4

5 回答 5

3

我认为这种脚本非常适合案例陈述。这是与二元运算符一起使用的第一遍:

#! /usr/bin/ruby

def calc
  puts "Calculator 1.0 \nEnter 'q' to quit."

  while true
    print ">> "
    str = gets.chomp.split(" ")  # splits into array, rejects blanks
    return if str[0] == 'q'      # quit if first element is 'q'

    operand1 = str[0].to_i
    operand2 = str[2].to_i
    operator = str[1].to_sym

    case operator
    when :+ then puts operand1 + operand2
    when :- then puts operand1 - operand2
    when :* then puts operand1 * operand2
    when :/ then puts operand1 / operand2
    when :% then puts operand1 % operand2
    else
      puts "invalid input"
    end
  end

end

if __FILE__ == $0     # if run as script, start calc: see http://j.mp/HOTGq8
  calc
end

然后,在命令行:

$ ./calc.rb 
Calculator 1.0 
Enter 'q' to quit.
>> 55 / 5
11
>> 90 / 10
9
>> 5 * 3093
15465

祝你好运!

如果您刚刚开始,这些资源是很好的资源:RubyMonk Codecademy

于 2013-11-14T18:22:54.400 回答
2

我知道这是一个有点旧的帖子,但是人们仍然找到了这个答案,我想补充一下 jkrmr 上面所说的内容。

jkrmr 发布的代码很棒,但不处理浮点计算,这是一个简单的修复,所以我添加了这个功能。:-)

#! /usr/bin/ruby

def calc
  puts "Calculator 1.1 \nEnter 'q' to quit."

  while true
    print ">> "
    str = gets.chomp.split(" ")  # splits into array, rejects blanks
    return if str[0] == 'q'      # quit if first element is 'q'
    if str[0].include? "."
      operand1 = str[0].to_f
    else
      operand1 = str[0].to_i
    end

    operator = str[1].to_sym

    if str[2].include? "."
      operand2 = str[2].to_f
    else
      operand2 = str[2].to_i
    end

    case operator
    when :+ then puts operand1 + operand2
    when :- then puts operand1 - operand2
    when :* then puts operand1 * operand2
    when :/ then puts operand1 / operand2
    when :% then puts operand1 % operand2
    else
      puts "invalid input"
    end
  end

end

if __FILE__ == $0     # if run as script, start calc: see http://j.mp/HOTGq8
  calc
end
于 2014-10-01T21:05:45.587 回答
2

一步一步地想你的问题。您希望用户提供整数。所以从一个简单的提示开始,就像你已经做过的那样:

puts "Enter your first value"

现在从用户那里获取价值:

firstVal = gets.chomp

现在提供另一个提示,并获得第二个值。

puts "Enter your second value"
secVal = gets.chomp

并输出你的结果:

puts "#{firstVal} + #{secVal} = #{firstVal.to_i + secVal.to_i}"

有时,简单明了地写出来是最简单的第一步。现在您可以创建一个添加函数来更有效地执行此操作。试试看,看看你有没有运气!

编辑:另外,我注意到你的add函数有两个参数,但你只传递了一个。为了调用具有两个参数的函数,您需要为其提供两个值。例如:

x = 5
y = 2

def add(a, b)
    return a + b
end

puts add(x, y)
于 2013-11-14T17:25:07.693 回答
1

这是我为帮助您入门而设计的一个快速小计算器:

#! /usr/bin/ruby

def add(a, b)
  a + b
end

while(true) do
  puts "Enter a calculation: "

  # chomp off the \n at the end of the input
  calc = gets.chomp

  # quit if the user types exit
  exit if calc.include?("exit")

  # puts the result of the add function, taking input of calc "split" into two numbers
  puts add(calc.split("").first.to_i, calc.split("").last.to_i)
  # spacing
  puts
end
于 2013-11-14T17:28:48.307 回答
1

以此为基础。如果您想继续接收计算请求,您可以将过程置于循环中(在许多解决方案中)。

while true
  puts 'Enter Val 1'
  v1 = gets.chomp.to_i
  puts 'Enter Val 2'
  v2 = gets.chomp.to_i
  puts "#{v1} + #{v2} = #{v1+v2} "
end
于 2013-11-14T17:30:11.877 回答