【问题标题】:While loop not looping - Ruby虽然循环不循环 - Ruby
【发布时间】:2015-02-01 14:46:00
【问题描述】:

当 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

【问题讨论】:

    标签: ruby while-loop


    【解决方案1】:

    那是因为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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-12-03
        • 1970-01-01
        • 2016-06-14
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多