循环不循环 - Ruby

时间:2015-02-01 06:20:04

标签: ruby while-loop

当str [0]为" a"和str [4]是" b"我明白了。然而,当" a"处于另一个位置,由" b"我弄错了。

任何帮助都会很棒!

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

2 个答案:

答案 0 :(得分:4)

那是因为在您预期之前调用了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

答案 1 :(得分:0)

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