Ruby nil:NilClass 的未定义方法“+”
Ruby undefined method `+' for nil:NilClass
我是 ruby 的新手,但我无法摆脱这个问题
当我 运行 代码时,我得到了这些,直到最后它都运行良好:
输入文本:在
之前一切正常
输入子文本:ll
TEXT:一切正常,直到 SUBTEXT:ll
输出:
4个
15
未定义方法+' for nil:NilClass
(repl):18:in
初始化'
puts "\nINPUT TEXT:"
@text = gets.chomp
puts "\nINPUT SUBTEXT:"
@subtext = gets.chomp
puts "\nTEXT: " + @text
puts "SUBTEXT: " + @subtext
puts "\n"
i = @text.index (@subtext)
puts "OUTPUT:"
while i != -1
puts i.to_s + ' '
i = @text.index @subtext, i+1
end
在Ruby中,String#index
没有找到子串时return-1;它 returns nil
。将您的条件从 while i != -1
更改为 while i
。 (之所以可行,是因为与其他一些语言不同,Ruby 认为值 0 为真;只有 false
和 nil
为假。)
索引return 如果子字符串不存在则为零。所以这应该可以解决这个问题
@text = gets.chomp
puts "\nINPUT SUBTEXT:"
@subtext = gets.chomp
puts "\nTEXT: " + @text
puts "SUBTEXT: " + @subtext
puts "\n"
i = @text.index (@subtext)
puts "OUTPUT:"
while i
puts i.to_s + ' '
i = @text.index @subtext, i+1
end
我是 ruby 的新手,但我无法摆脱这个问题 当我 运行 代码时,我得到了这些,直到最后它都运行良好:
输入文本:在
之前一切正常输入子文本:ll
TEXT:一切正常,直到 SUBTEXT:ll
输出: 4个 15
未定义方法+' for nil:NilClass
(repl):18:in
初始化'
puts "\nINPUT TEXT:"
@text = gets.chomp
puts "\nINPUT SUBTEXT:"
@subtext = gets.chomp
puts "\nTEXT: " + @text
puts "SUBTEXT: " + @subtext
puts "\n"
i = @text.index (@subtext)
puts "OUTPUT:"
while i != -1
puts i.to_s + ' '
i = @text.index @subtext, i+1
end
在Ruby中,String#index
没有找到子串时return-1;它 returns nil
。将您的条件从 while i != -1
更改为 while i
。 (之所以可行,是因为与其他一些语言不同,Ruby 认为值 0 为真;只有 false
和 nil
为假。)
索引return 如果子字符串不存在则为零。所以这应该可以解决这个问题
@text = gets.chomp
puts "\nINPUT SUBTEXT:"
@subtext = gets.chomp
puts "\nTEXT: " + @text
puts "SUBTEXT: " + @subtext
puts "\n"
i = @text.index (@subtext)
puts "OUTPUT:"
while i
puts i.to_s + ' '
i = @text.index @subtext, i+1
end