我正在尝试编写一个if
条件,如果其所有元素都是数字,则接受字符串数组。如果它不是数字,则应在"incorrect input"
中返回else
。之后,我会将这些数字转换为整数以获得平方根。这就是我写的:
def square(string)
if string =~ /^\d+$/
m = string.split(",").map(&:to_i).sort
if m.count == 4 && m.each_cons(2).all? {|a, b| b == a + 1 }
d = m.inject{|c,v| c*v}
g = d + 1
r = Math.sqrt(g).to_i
puts "#{g}, #{r}"
else
puts 'not consecutive'
end
else
puts 'incorrect input'
end
end
square("3,0,1,0")
答案 0 :(得分:-1)
正则表达式store
仅检查一个整数。您需要执行以下操作:
/^\d+$/
包含逗号。
此外,如果您想要包含实数:
/^\d+(,\d+)*$/
答案 1 :(得分:-2)
所以这不会起作用,因为你只留下一个数字的空间。您需要在\ d之后添加+
以允许任意数量的数字。加号表示正则表达式检查一个或多个符合加号之前的字符的字符。您可以通过以下方式完成此任务:
if string =~ /^\d+$/
do_stuff
end