在Ruby中,我希望创建一个简短的程序,用户可以输入一定数量的单词(现在为5),程序需要按字母顺序将单词吐回给用户,并且每个单词必须从ALL CAPS替换为全部小写字母。
此程序只能使用(.each do,.sort,.upcase,.downcase),数组,循环和if / else语句等方法。没有...所以没有索引,词典,模块,参数等。语法不应该与我已经写过的内容有太大分歧。
这是我到目前为止的代码......我一直没有得到任何方法错误......任何帮助都将不胜感激。
words = []
5.times do
puts "Please enter a word"
words << gets.chomp
end
words.sort.each do |odd, even|
if odd puts words.upcase
elsif even puts words.downcase
end
end
答案 0 :(得分:1)
填充数组的第一个循环很好。
words.sort.each do |odd, even|
if odd puts words.upcase
elsif even puts words.downcase
end
end
这不起作用。 each
从排序后的数组中获取一个单词&#34; feeds&#34;到了街区。该块使用变量&#34; odd&#34;为了它。由于变量&#34;偶数&#34;没有得到价值,它将是零。
在下一行中,Ruby决定odd
是否为真,并且由于它不是false
或nil
,Ruby决定它是,因此执行puts words.upcase
。 words
但是,作为一个数组,不知道上升的东西 - 并通过给出错误告诉你。
以下代码使用变量作为&#34;切换&#34 ;;如果它关闭则打开,反之亦然。
words = []
5.times do
puts "Please enter a word"
words << gets.chomp
end
up = true # the toggle
words.sort.each do |word|
if up then
puts word.upcase
up = false
else
puts word.downcase
up = true
end
end
答案 1 :(得分:0)
puts "Enter 5 words separated by spaces: "
words = gets.chomp!
results = words.split(" ").sort!
caps = true
results.each do |word|
if caps == true
puts word.upcase
caps = false
elsif caps == false
puts word.downcase
caps = true
end
end
答案 2 :(得分:0)
我同意切换的想法是其他方法已经提出的方法。
我只是简单地简化了一下,因为在Ruby中不需要明确地针对true
或false
检查切换,也不需要将切换显式更改为true
或{ {1}}在每次迭代中,只需切换它:
false