我正在尝试读取包含一些数字的文件。然后我想将它们转换为整数。当我在下面尝试时,没关系。
input = IO.readlines(filename)
size = input[0].split(/\s/).map(&:to_i)
但是,当我在下面尝试时,它会给我这个错误。
input = IO.readlines(filename)
lnth = input.length
i=0
while i<=lnth
size = input[i].split(/\s/).map(&:to_i)
i=i+1
end
未定义的方法`split'代表nil:NilClass(NoMethodError)
我现在如何解决错误?
答案 0 :(得分:2)
我想知道这应该做什么?
size = line.split(/\s/).map(&:to_i)
它将分割像“321 123 432”这样的字符串并返回类似[321,123,432]的数组。
此外,变量size
在每一轮再次初始化。
忽略这一点,这是一个类似Ruby的版本:
File.readlines(filename).each do |line|
size = line.split(/\s/).map(&:to_i)
end
在Ruby中,你通常不会使用for i in item_count ..
或while i<item_count
之类的东西,因为我们有像.each这样的枚举器。
答案 1 :(得分:1)
显然while i<lnth
不是<=
:
while i<lnth
size = input[i].split(/\s/).map(&:to_i)
i=i+1
end
但最好使用:
size = line.split(/\s/).map(&:to_i)
答案 2 :(得分:0)
答案 3 :(得分:0)
这应该这样做:
def nil.split *args
nil # splitting of nil, in any imaginable way, can only result again in nil
end