尝试解决这个问题,你提供参数并需要提供匹配的输出。
将两个整数(i和n)作为命令行参数。将i写入标准输出,然后是以下n个整数(用逗号分隔)。
请勿在输出中包含空格或任何隐藏字符。
示例:参数:3 5输出:3,4,5,6,7,8
这是我的代码:
base_number = ARGV.shift.to_i
iterate_number = ARGV.shift.to_i
if iterate_number < 0
base_number = base_number.to_s
iterate_number = iterate_number.to_s
else
print base_number
iterate_number.times do
base_number = base_number + 1
print ','
print base_number
end
end
到目前为止,我已经设法抓住了7/9的测试。这包括当iterate_number为负时,输出返回空白。
最后两个测试涉及字母或空白的参数,两个都在变量i中解析,返回0,使我的输出为0而不是空白。
谢谢!
答案 0 :(得分:2)
您使用times
走在正确的轨道上,但是您错过了Ruby中的一个关键功能:利用枚举器并将其视为数组。
例如:
i = ARGV[0].to_i
n = ARGV[1].to_i
puts (i..i+n).to_a.join(', ')
这会设置一个简单的范围,将其转换为值数组,然后将这些值连接在一起。
如果您想测试某个值是否为“数字”,请尝试以下操作:
value.to_i.to_s == value
如果转换为整数并且返回时它是相同的,则保证它是一个整数值。
答案 1 :(得分:-1)
要检查i
是否为字符串,您可以致电i.match(/^\d+$/)
,当它不是字符串时,它会返回false
答案 2 :(得分:-1)
当你说信或空白时,你的意思是"String"
或``nil```?
您应首先检查输入是否为整数。
return nil unless iterate_number.is_a?(Integer)