我是ruby的初学者,试图编写一个简单的程序来检测大写输入。我现在使用ruby-1.9.3-p125。所以,我正在努力编译这个:
# coding: utf-8
puts 'hello! enter something:'
while req!=req.upcase
req=gets.chomp
if req == req.upcase
puts "This is UpperCase!"
else
puts "Not UpperCase :( Try again!"
end
end
puts "GoodBye!"
我收到了这样的错误:
app1.rb:4:in `<main>': undefined method `upcase' for nil:NilClass (NoMethodError)
也许我应该包含这样的lib或smth? BTW,“UpCase”.upcase`运作良好。
答案 0 :(得分:2)
你的while循环引用req,然后分配任何内容。
您可以在while条件while (req = gets.chomp) != req.upcase
中设置ref,但这会使条件变得复杂,并且仍然无法处理文件结束条件,其中gets返回nil。更好的方法是将条件集中在文件末尾,并使用break在特殊测试中终止循环:
puts 'hello! enter something:'
while req = gets
req.chomp!
if req == req.upcase
puts "This is UpperCase!"
break
else
puts "Not UpperCase :( Try again!"
end
end
puts "GoodBye!"