Ruby noob在这里学习绳索。我目前正在进行this tutorial并正在进行此练习:
让我们写一个要求我们的程序 输入尽可能多的单词(一个 每行一句话,一直持续到我们 只需在空行上按Enter键, 然后重复这些话 按字母顺序给我们。
我现在忽略了字母顺序部分。
这是我的代码:
puts 'Hi, do you need something sorted?'
yn = gets.chomp
while yn != 'no'
puts 'What else?'
array = [gets]
yn = gets.chomp
end
puts 'Here\'s what you told me: ' +array.to_s
我已经调整了几个小时。为了防止我的笔记本电脑因挫败感而破坏我正在休息。任何有更多经验,可能更有耐心的人都可以指出我的错误吗?
答案 0 :(得分:7)
请记住,每次gets
是要求用户输入的方法时。在你的行上:
array = [gets]
yn = gets.chomp
你实际上要求输入两次。相反,将用户输入存储在某处(例如数组,见下文)并获取存储的值而不是向用户询问两次。
此外,array = [gets]
用包含一个元素(用户输入)的数组替换现有数组。您永远不会在数组中构建用户输入。相反,在while循环之前初始化数组并在循环中使用<<
:
array = Array.new
...
while yn != "no"
...
array << gets.chomp
yn = array.last
...
end
答案 1 :(得分:2)
如果你遇到困难,你应该做的第一件事就是尝试更简单的事情。
而不是执行gets
和循环,只需尝试做一个简单的gets
。
puts 'Hi, do you need something sorted?'
yn = gets.chomp
然后我会看到yn
是否符合我的预期。
我要做的下一件事是,而不是多次循环,只需尝试一次
puts 'Hi, do you need something sorted?'
yn = gets.chomp
if yn != 'no'
puts 'What else?'
array = [gets]
yn = gets.chomp
STDERR.puts "array is #{array.inspect}"
STDERR.puts "yn is #{yn.inspect}"
end
然后你会希望array
和yn
都得到输入,这是没有意义的。
有关如何调试Ruby代码的更多提示,请参阅How do I debug Ruby scripts?
答案 2 :(得分:2)
我遇到了同样的问题。这是我结束的地方(我认为它符合问题的所有规范):
puts 'Type in as many words as you\'d like. When you\'re finished, press enter on an empty line'
array = []
input = ' '
while input != ''
input = gets.chomp
array.push input
end
puts
puts array.sort
答案 3 :(得分:1)
while yn != "no"
array << yn
print "What else? "
yn = gets.chomp
end
“&lt;&lt;&lt;将yn附加到数组中。 (我使用print
的唯一原因是因为它将光标放在问号旁边而不是下一行。没有其他原因)
答案 4 :(得分:1)
#encoding:utf-8
x = Array.new
puts "enter something:".capitalize
y = ''
while y !=#nill
y = gets.chomp
x.push y
end
x.delete ('')
x.compact
puts "You entered: " + x.sort.to_s
puts "Objects in array: " + x.size.to_s
#made by ~Pick@chu!!!
答案 5 :(得分:0)
这是我如何完成这个程序:
array = [ ]
input = gets.chomp
while
input != ''
array.push input
input = gets.chomp
end
puts array
puts
puts array.sort