虽然循环不循环 - Ruby

While loop not looping - Ruby

当 str[0] 为 "a" 且 str[4] 为 "b" 时,我得到 true。但是,当 "a" 处于另一个位置并且与 "b" 由三个空格分隔时,我得到 false.

任何帮助都会很棒!

def ABCheck(str)

  str.downcase.split()
  x = 0
  while x < str.length - 4
    return true if ((str[x] == "a") && (str[x + 4] =="b"))
      x += 1
    return false

  end     
end

puts ABCheck("azzzb")
#Currently puts "true"
puts ABCheck("bzzabzcb")
#Currently puts "false" - even though it should print true

那是因为 return false 在您预期之前被调用了。它应该放在循环之外:

def ABCheck(str)
  str.downcase.split()
  x = 0
  while x < str.length - 4
    return true if ((str[x] == "a") && (str[x + 4] =="b"))
    x += 1
  end  
  return false   
end

您在 while 循环完成之前调用了 false。你需要在while循环之后调用它。