在Cloud9中,我使用以下代码,它可以正常工作。
def LongestWord(sen)
i = 0
cha ="&@%*^$!~(){}|?<>"
new = ""
while i < sen.length
i2 = 0
ch = false
while i2 < cha.length
if sen[i] == cha[i2]
ch = true
end
i2 += 1
end
if ch == false
new += sen[i].to_s
end
i += 1
end
words = new.split(" ")
longest = ""
idx = 0
count = 0
while idx < words.length
word = words[idx]
if word.length > count
longest = word
count = word.length
end
idx += 1
end
# code goes here
return longest
end
# keep this function call here
# to see how to enter arguments in Ruby scroll down
LongestWord("beautifull word")
在练习“最长词”中的Codebytes中,您必须在参数中使用相同的STDIN。它是相同的代码,但改变了参数,但它不起作用:
def LongestWord(sen)
i = 0
cha ="&@%*^$!~(){}|?<>"
new = ""
while i < sen.length
i2 = 0
ch = false
while i2 < cha.length
if sen[i] == cha[i2]
ch = true
end
i2 += 1
end
if ch == false
new += sen[i].to_s
end
i += 1
end
words = new.split(" ")
longest = ""
idx = 0
count = 0
while idx < words.length
word = words[idx]
if word.length > count
longest = word
count = word.length
end
idx += 1
end
# code goes here
return longest
end
# keep this function call here
# to see how to enter arguments in Ruby scroll down
LongestWord(STDIN.gets)
我认为可能与浏览器产生某种冲突。输出显示了很多数字。有人可以帮我测试代码吗?感谢任何反馈,谢谢!
答案 0 :(得分:0)
Coderbyte正在旧版本的Ruby上运行您的代码 - Ruby 1.8.7
在这个版本的Ruby中,使用像sen[i]
这样的字符串的索引并不会返回i
处的字符,而是返回该字符的数字ASCII值。这就是数字的来源。
要使代码能够在Ruby 1.8.7上运行,您可以将some_string[i]
替换为some_string[i, 1]
- 此变体返回从i
开始的长度为1的子字符串,因此与some_string[i]
在更新的Ruby版本中的行为。有关详细信息,请参阅文档here。