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 为真;只有 falsenil 为假。)

索引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