From: Pete Yandell Date: 2006-06-26T08:57:05+09:00 Subject: Re: Stumped:beginners question I'm just going to rewrite this, because there are a bunch of bad things in it. def ask(question) response_is_valid = false result = false while !response_is_valid puts question reply = gets.chomp.downcase case reply when 'yes' result = true response_is_valid = true when 'no' result = false response_is_valid = false else puts 'Please answer "yes" or "no".' end end result end Part of the reason you're getting confused is that you're using the 'reply' variable for several things: to store the entered string, to store the final result, and to determine whether a valid response has been entered. That's called overloading a variable, and is bad programming practice. In the version above (which is probably a bit more verbose than it really needs to be, but should be easier for you to work with), I've split those things out into three separate variables. Cheers, Pete Yandell http://9cays.com/ On 25/06/2006, at 11:32 PM, Dark Ambient wrote: > I'm having a hard time with both getting my branching correct as well > as my loop. > In this little program, the survey taker asks expecting a "yes" or > "no" (currently not working correctly). If any other response is > given, then the survey taken says..please answer with yes or no... > > I commented out the return at the end since I'm not even sure what > that's doing. > > TIA > Stuart > > $stdout.sync = true > > def ask question > reply = nil > while (not reply) > puts question > reply = gets.chomp.downcase > > if (reply !='yes' || reply != 'no' ) > puts ' Please answer "yes" or "no".' > > > elsif reply == 'yes' > reply = true > else reply == 'no' > reply = false > end > end > end > > #reply # This is what we return (true or false). > #end >