【问题标题】:JoshCheek's ruby-kickstart Challenge 1 Session 2JoshCheek 的 ruby​​-kickstart 挑战 1 第 2 节
【发布时间】:2015-11-04 23:08:24
【问题描述】:

作为练习的一部分,我应该编写一个程序,读取在键盘上键入的两个整数,然后输出它们的和、差和乘积。

标准输入类似于“9 2\n”,希望我将“11\n7\n18\n”打印到标准输出。

我完全错了吗?

def sum_difference_product
  input = gets.chomp
  array = input.split(" ").map { |x| x.to_i }
  sum = array[0] + array[1]
  difference = array[0] - array[1]
  product = array[0] * array[1]
  result = ""
  result << sum
  result << difference
  result << product
  return result
end
sum_difference_product

【问题讨论】:

    标签: arrays ruby string input output


    【解决方案1】:

    您当前正在使用&lt;&lt; 将整数附加到字符串,它(从外观上看)将 int 视为原始二进制文件。 1 例如变成\u0001

    改为将result 更改为一个数组,并像这样使用" " 加入它。

    def sum_difference_product
      input = gets.chomp
      array = input.split(" ").map { |x| x.to_i }
      pp array
      sum = array.fetch(0) + array.fetch(1)
      difference = array[0] - array[1]
      product = array[0] * array[1]
      result = []
      result << sum
      result << difference
      result << product
      return result.join(" ")
    end
    
    puts sum_difference_product
    

    【讨论】:

      【解决方案2】:

      好吧,我把事情复杂化了……删除了结果、总和、差、积,只放了总和、差和积的部分。现在好了:

      def sum_difference_product
        input = gets.chomp
        array = input.split(" ").map { |x| x.to_i }
        puts array[0] + array[1]
        puts array[0] - array[1]
        puts array[0] * array[1]
      end
      

      【讨论】:

      • 不要实现有副作用的函数,比如puts。看看我上面的例子。
      猜你喜欢
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 2012-08-25
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多