两个数字列表,一个带有输入的pos号,一个 那些是负数(忽略零值数字)
方法:您必须首先构建具有所需输出编号的两个数组 显示其中任何一个
以下代码不是ruby。我怎么能把它转换成红宝石?
# Loop to read input and build the two new arrays
while ($next = <>) {
if ($next > 0) {
push @pos_list, $next;
}
else {
if ($next < 0) {
push @neg_list, $next;
}
}
}
# Output the results
print "The array of positive numbers: \n @pos_list \n";
print "\nThe array of negative numbers: \n @neg_list \n";
答案 0 :(得分:1)
numbers = [4,-2,7,3,0,-8]
pos_list = numbers.select {|x| x > 0}
neg_list = numbers.select {|x| x < 0}
p pos_list # => [4, 7, 3]
p neg_list # => [-2, -8]
numbers
是您根据用户输入构建的数字数组。 Array#select
返回一个新数组,其中包含导致附加块计算为true
的所有元素。请参阅:http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-select
答案 1 :(得分:0)
假设numbers
是输入中的数字数组:
pos = []
neg = []
numbers.each do |n|
pos += n if n > 0
neg += n if n < 0
end
执行上述代码后,您可以从pos
检索正数,从neg
检索负数。
填充numbers
的方式可能有所不同。一个可能的解决方案是循环并继续要求一个数字:
numbers = []
begin
current = gets.chomp.to_i
numbers << current if current > 0
end until current == 0
假设您不希望0
成为number
的一部分。否则,您必须检查给定的输入以停止循环。或者,您可以使用固定大小的数字。