2015-11-04 118 views
0

作为练习的一部分,我应该编写一个程序,读取键盘上键入的两个整数,然后输出它们的总和,差异和乘积。JoshCheek的ruby-kickstart挑战1第2场

标准输入类似于“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 

回答

0

您目前正在追加整数使用<<这(从它的外观)对待INT为原始二进制字符串。 1例如becoms \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 
0

好吧,我是过于复杂的事情......移除后的结果,和,差,积,只是把那名中和,差和产品的零部件。现在可以:

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 
+0

请勿实施具有副作用的函数,例如'puts'。看看我上面的例子。 – Oleander