【问题标题】:`<=': comparison of Fixnum with Array failed (ArgumentError)`<=': Fixnum 与 A​​rray 的比较失败 (ArgumentError)
【发布时间】:2017-01-31 10:27:32
【问题描述】:

在这段代码中,我试图删除单词中的最后一个元音。运行代码后,我收到一个参数错误,指出“Fixnum 与数组的比较失败(ArgumentError)。请帮助!

VOWELS = %w( a e i o u)

def hipsterfy(string)

  new_string = string.split('')

  reversed_string = new_string.reverse

  i = 0

  while i <= reversed_string

     if VOWELS.include?[i]

        reversed_string[i] = ('')

    i += 1
    end
    reversed_string
  end

  reversed_string.reverse 

end 

【问题讨论】:

  • 提示:如果元音用完了,i 会增加吗?您还需要深入研究正则表达式,或者至少是 tr 方法。
  • 正确的缩进几乎肯定会对你有所帮助。
  • 虽然没有回答你的问题,但this SO question解决了你的问题。
  • 请不要编辑您的问题以使现有答案无效。而是创建一个新问题。

标签: ruby


【解决方案1】:

我确信这不是这段代码的唯一漏洞,但你得到的错误来自这里:

while i <= reversed_string

应该是这样的

while i < reversed_string.length

因为reversed_array 是一个数组,您可能希望将i 与它的length 进行比较。

【讨论】:

    【解决方案2】:

    当你测试时

    if VOWELS.include?[i]
    

    您正在检查VOWELS 常量是否包含数组索引。你想查看字符串中那个位置的字母,对吧?

    if VOWELS.include?(reversed_string[i])
    

    【讨论】:

      【解决方案3】:

      if 语句之后需要有一个“break”语句,以便在循环第一个元音后立即停止循环。这将阻止它继续到下一个元音。问题已解决。

      【讨论】:

        猜你喜欢
        • 2014-02-01
        • 2010-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 2015-01-15
        相关资源
        最近更新 更多