Forum: Ruby Newbie needs a pointer

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
46d82e2ca8cd9d8634a29cb9fc005db3?d=identicon&s=25 unknown (Guest)
on 2007-03-30 21:00
(Received via mailing list)
Hi all, just started looking at Ruby in earnest today and my logic has
failed me already. Can
someone provide some subtle hints are to where the following code needs
attension. Its currently
stuck in a continuous loop, and 'q' doesnt exit the loop.

#a continous loop until 'q' is press
puts "Please enter your name?"
name=gets
while (name!='q')
  puts "welcome, #{name}Enter your name again:"
  name=gets

end


--
--------------------------------- --- -- -
Posted with NewsLeecher v3.9 Beta 1
Web @ http://www.newsleecher.com/?usenet
------------------- ----- ---- -- -
81d609425e306219d54d793a0ad98bce?d=identicon&s=25 Matthew Moss (Guest)
on 2007-03-30 21:08
(Received via mailing list)
Offhand, I'd guess that the return value from gets also includes the
newline char(s).
Try:
    name = gets.chomp
9dfe8c734b0f9b37a4e218425c0a2138?d=identicon&s=25 Gene Tani (Guest)
on 2007-03-30 21:09
(Received via mailing list)
On Mar 30, 12:00 pm, JervisT...@ruby-lang.org (d...@o2.ie) wrote:
>
> end
>

irb(main):024:0> name=gets
wha
=> "wha\n"
91e1fb8bd265b7629491ab64c42f0906?d=identicon&s=25 Reid Thompson (Guest)
on 2007-03-30 21:11
(Received via mailing list)
dwyer@o2.ie wrote:
>
>
puts "Please enter your name?"

String name=gets
puts name.methods
while ( name.chomp != "q")
    puts "welcome, #{name}Enter your name again:"
    name=gets
end
Ac0085dae0703db56ad7f8cb9e1798ba?d=identicon&s=25 Phillip Gawlowski (Guest)
on 2007-03-30 21:12
(Received via mailing list)
dwyer@o2.ie wrote:
>
> end

C:\WINDOWS\system32>irb
irb(main):001:0> name = gets
q
=> "q\n"
irb(main):002:0> name != 'q'
=> true
irb(main):003:0> quit

C:\WINDOWS\system32>ruby -v
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]

Try name = gets.chomp!

--
Phillip "CynicalRyan" Gawlowski
http://cynicalryan.110mb.com/

Eek! That was supposed to be My Special Law, _MY_ special law, I tell
you!

T/
9dec3df8319c613f6f4f14a27da0fdb4?d=identicon&s=25 Kyle Schmitt (Guest)
on 2007-03-30 21:16
(Received via mailing list)
your string to quit has garbage (like a \n or somefin) at the end.
A little function like this may help

def same(somestring)
  input=gets
  if somestring==input
    puts "Same"
  else
    puts "#{input}!=#{somestring}"
  end
end

That will show what you're already seeing.  So add a .length..
def same(somestring)
  input=gets
  if somestring==input
    puts "Same"
  else
    puts "#{input}!=#{somestring}"
    puts "input.length=#{input.length}"
    puts "somestring.length=#{somestring.length}"
  end
end

Humm....
so what do we do?  strip.
you _could_ do

input=input.strip

But that's not fun.  Use a bang at the end of common functions to use
the dangerous destructive fun version :) usually a ! changes the
object itself

so input.strip!

def same(somestring)
  input=gets
  input.strip!
  if somestring==input
    puts "Same"
  else
    puts "#{input}!=#{somestring}"
    puts "input.length=#{input.length}"
    puts "somestring.length=#{somestring.length}"
  end
end

Does that help?
7a561ec0875fcbbe3066ea8fe288ec77?d=identicon&s=25 Sebastian Hungerecker (Guest)
on 2007-03-30 21:57
(Received via mailing list)
dwyer@o2.ie wrote:
> #a continous loop until 'q' is press
> puts "Please enter your name?"
> name=gets
> while (name!='q')
>   puts "welcome, #{name}Enter your name again:"
>   name=gets
>
> end

After name=gets name contains the string that the user typed including
the
enter. So if the user enters 'q', the value of name is "q\n". You can
remove
the \n with the chomp method (i.e. use name=gets.chomp instead of
name=gets).

HTH,
Sebastian
46d82e2ca8cd9d8634a29cb9fc005db3?d=identicon&s=25 unknown (Guest)
on 2007-03-31 01:26
(Received via mailing list)
Thanks for all suggestions. IRB provides such a neat method to step
through the program, would not
have thought of it except for the suggestions.

When I decided to take a look at Ruby I was concerned that I would not
be able to receive suppport
(as python/php/asp.net still seem to reign supreme) , but this newsgroup
has allayed all my
doubts.

Thanks for the help.

btw => .chomp! works a .treat!


--
--------------------------------- --- -- -
Posted with NewsLeecher v3.9 Beta 1
Web @ http://www.newsleecher.com/?usenet
------------------- ----- ---- -- -
This topic is locked and can not be replied to.