Simple ruby program problem

So I have been reading Chris Pine's book, "Learn to Program". I am
working through the examples and the "a Few Things to Try" sections at
the end of each chapter. I having a problem with one of them.

Here is the chapter: http://pine.fm/LearnToProgram/?Chapter=08

Basically, he wants you to write the psych question program w/o using
the variables good_answer and answer. I tried to do this in the code
below, however, when I run it in TextMate and the gets asks me for input
before puts lists the question. In other words, the first thing that
happens after I run it is the "Script is requesting input" message box.

I will note this: every now and then, the program will work properly,
but this is usually after I run the program for the first after opening
Textmate for the first time.

Thanks for your help!!

# begin code here
def ask question

  reply = ''

  while (reply != 'yes' || reply != 'no')

     puts question

     reply = gets.chomp.downcase

     if reply == 'yes'
       return true

     elsif reply == 'no'
       return false

     end

     puts 'Please answer yes or no!'

  end

end

puts

ask 'do you like apples?'
wets_bed = ask 'do you wet the bed?'

puts

puts wets_bed

# end of code

···

--
Posted via http://www.ruby-forum.com/.

Well, this is effectively and infinite loop becasue reply will always be != to one or the other and the whole expression will be true.

Since you have a return statement in a couple places, this might not be a problem for this program.

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

On Jan 22, 2009, at 6:40 PM, Hunter Walker wrote:

while (reply != 'yes' || reply != 'no')

Rob Biedenharn wrote:

···

On Jan 22, 2009, at 6:40 PM, Hunter Walker wrote:

while (reply != 'yes' || reply != 'no')

Well, this is effectively and infinite loop becasue reply will always
be != to one or the other and the whole expression will be true.

Since you have a return statement in a couple places, this might not
be a problem for this program.

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

Yeah, good point. You are right though, the return statement does stop
the loop. See attached screen shot for what happens....

Attachments:
http://www.ruby-forum.com/attachment/3196/post.jpg

--
Posted via http://www.ruby-forum.com/\.

Try running directly from an xterm (Terminal) window. I suspect that running inside TextMate is the cause of the trouble (and that your script wants input).

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

On Jan 22, 2009, at 7:57 PM, Hunter Walker wrote:

Rob Biedenharn wrote:

On Jan 22, 2009, at 6:40 PM, Hunter Walker wrote:

while (reply != 'yes' || reply != 'no')

Well, this is effectively and infinite loop becasue reply will always
be != to one or the other and the whole expression will be true.

Since you have a return statement in a couple places, this might not
be a problem for this program.

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

Yeah, good point. You are right though, the return statement does stop
the loop. See attached screen shot for what happens....

Attachments:
http://www.ruby-forum.com/attachment/3196/post.jpg

Rob Biedenharn wrote:

···

On Jan 22, 2009, at 7:57 PM, Hunter Walker wrote:

be a problem for this program.

Attachments:
http://www.ruby-forum.com/attachment/3196/post.jpg

Try running directly from an xterm (Terminal) window. I suspect that
running inside TextMate is the cause of the trouble (and that your
script wants input).

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

You are correct, Rob. Works every time in xterm. Thank you for the
help.
--
Posted via http://www.ruby-forum.com/\.