Please answer to this code?


#1

can anybody execute it and tell me where i go wrong.please let me know
asap…

puts " what is your name"
name = gets.chomp

puts " hello " + name + " how are you"

fine = gets

if fine.String==“good”
puts " good buddy"
else
puts “oh iam sorry”
end


#2

viswesh,

The place where your having the error is
if fine.String == “good”

fine is already a string, thats what gets returns so you don’t need to
convert it.

String is a class not a method, so object.String will not work. If you
want
to get a string from an object use the to_s method
eg object.to_s

but you could do this a bit differently

puts “What is your name?”
puts “Hello #{gets.chomp} how are you?”
fine = gets.chomp
fine == “good” ? puts( “Good buddy”) : puts( “Oh I’m Sorry” )

This would do the same thing that your looking to do with the code
above,
but would be more convienient if you wrapped it in a method definition
and
then called it.

def check_it_out
puts “What is your name?”
puts “Hello #{gets.chomp} how are you?”
fine = gets.chomp
fine == “good” ? puts( “Good buddy”) : puts( “Oh I’m Sorry” )
end

call with

check_it_out


#3

viswesh wrote:

can anybody execute it and tell me where i go wrong.please let me know
asap…

puts " what is your name"
name = gets.chomp

puts " hello " + name + " how are you"

fine = gets

if fine.String==“good”
puts " good buddy"
else
puts “oh iam sorry”
end

I think you forgot the .chomp on the second gets. This is probably your
main issue. Some style suggestions,

puts " what is your name"
name = gets.chomp

puts " hello #{name} how are you"
fine = gets.chomp

if fine == “good”
puts " good buddy"
else
puts “oh iam sorry”
end


#4

You’d get gets.chomp for fine and use fine==“good” for direct
comparison.

-xiaofeng


#5

Hi Mike and Daniel,

That’s wonderfull quick time replies and iam thankfull for both.
Yeah Mr.Mike ur right.
thanks again…
bye

Mike N. wrote:

viswesh wrote:

can anybody execute it and tell me where i go wrong.please let me know
asap…

puts " what is your name"
name = gets.chomp

puts " hello " + name + " how are you"

fine = gets

if fine.String==“good”
puts " good buddy"
else
puts “oh iam sorry”
end

I think you forgot the .chomp on the second gets. This is probably your
main issue. Some style suggestions,

puts " what is your name"
name = gets.chomp

puts " hello #{name} how are you"
fine = gets.chomp

if fine == “good”
puts " good buddy"
else
puts “oh iam sorry”
end


#6

< Your code

fixed code


< fine = gets

fine = gets.chomp

< if fine.String==“good”

if fine == “good”

----- Original Message -----
From: “viswesh” removed_email_address@domain.invalid
Newsgroups: comp.lang.ruby
To: “ruby-talk ML” removed_email_address@domain.invalid
Sent: Wednesday, May 17, 2006 9:46 AM
Subject: Please answer to this code?


#7

Hi mike,

can u suggest me how to write a method where both cases are accepted to
a given string and that method i want to refer in the below program…

thanx

viswesh wrote:

Hi Mike and Daniel,

That’s wonderfull quick time replies and iam thankfull for both.
Yeah Mr.Mike ur right.
thanks again…
bye

Mike N. wrote:

viswesh wrote:

can anybody execute it and tell me where i go wrong.please let me know
asap…

puts " what is your name"
name = gets.chomp

puts " hello " + name + " how are you"

fine = gets

if fine.String==“good”
puts " good buddy"
else
puts “oh iam sorry”
end

I think you forgot the .chomp on the second gets. This is probably your
main issue. Some style suggestions,

puts " what is your name"
name = gets.chomp

puts " hello #{name} how are you"
fine = gets.chomp

if fine == “good”
puts " good buddy"
else
puts “oh iam sorry”
end


#8

viswesh wrote:

if fine.String==“good”
puts " good buddy"
else
puts “oh iam sorry”
end

puts “what is your name?”
name = gets.chomp

puts “hello #{name}, how are you?”

puts gets.chomp == “fine” ? “good, buddy!” : “oh, i’m sorry!”

Cheers,
Daniel


#9

viswesh wrote:

can u suggest me how to write a method where both cases are accepted to
a given string and that method i want to refer in the below program…

I’m not too sure what you are asking for. Something like this?

puts " what is your name"
name = gets.chomp

def checkIfGood(string)
if string == “good”
" good buddy"
else
“oh iam sorry”
end
end

puts " hello #{name} how are you"
puts checkIfGood(gets.chomp)


#10

You’d get gets.chomp for fine and use fine==“good” for direct
comparison.

-xiaofeng


#11

I assume you are getting an error that looks something like:

list.rb:8: private method `String’ called for “David\n”:String
(NoMethodError)

That is telling you that there is no method named String for the
string object that you named “fine”. On the line where you do the
comparison with “good” I assume you want to compare two strings. The
variable fine is already a string so you don’t have to do any sort of
implicit converstion first.

if fine == “good”

That’s all you need there. Now if you were comparing a variable that
contained something other than a string, you could force a conversion
(vaguely similar to a cast in other languages) by calling the to_s
method. That would look like this:

if fine.to_s == “good”

however that is totally unnecessary here because both items are
already strings.

David K.


#12

Hi Mike,

Thanks for ur time.
my intent of doing working on this code is :
as u can see the name prints if u give the name then after that if the
user types “good” or “ok” or “fine” or “wonderfull” he should be
prompted with saying Good buddy. else with “oh iam sorry”…
***irrespective of case(i.e either uppercase or lowercase).

i heard abt the casecmp() but usage of it 's not clear to me… it would
be great if u could use that method in this code.

thanx in advance…

Mike N. wrote:

viswesh wrote:

can u suggest me how to write a method where both cases are accepted to
a given string and that method i want to refer in the below program…

I’m not too sure what you are asking for. Something like this?

puts " what is your name"
name = gets.chomp

def checkIfGood(string)
if string == “good”
" good buddy"
else
“oh iam sorry”
end
end

puts " hello #{name} how are you"
puts checkIfGood(gets.chomp)


#13

On 5/18/06, viswesh removed_email_address@domain.invalid wrote:

be great if u could use that method in this code.

puts " hello #{name} how are you"
puts checkIfGood(gets.chomp)


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

You can use regular expressions for case insensitivity or downcase the
string - regular expressions have the benefit of being far more
flexible…

note with the regexp, unless we test for its absence we can forgo the

chomp
happy = case gets
when /not.*good/i : false
when /good/i : true
when /ok/i : true
when /fine/i : true
when /wonderful/i : true
else false # am I the only one that feels that the : should be
allowed here for symmetry
end
puts happy ? “Good buddy” : “oh i am sorry”

Hope that helps
pth


#14

On 5/18/06, Patrick H. removed_email_address@domain.invalid wrote:

i heard abt the casecmp() but usage of it 's not clear to me… it would
be great if u could use that method in this code.

Hi Viswesh,

you can find documentation, including usage for casecmp here:
http://www.ruby-doc.org/core/classes/String.html#M001839

Have a quick look at this documentation, it will answer a lot of your
questions. It’s available for the entire core classes here:
http://www.ruby-doc.org/core/

and for the standard library included with ruby here:
http://www.ruby-doc.org/stdlib/

Cheers,
-tim


#15

viswesh, how about something like this? i’m a bit of a ruby newbie
myself, so the syntax here is probably terrible. the general idea may
fit what you’re looking for? it’ll extend to whichever cases you
require easily

Chris

def respond(input)
var cases = [
[[“good”, “wonderful”, “ok”, “fantastic”],
“Good old buddy”],
[[“bad”, “so-so”],
“That’s rough”]
];

for (l in cases)
	if input.toLower in l[0]
		return l[1]

return "no match"

end

puts "How are you? "
puts respond(gets.chomp)


#16

On 5/19/06, Chris K. removed_email_address@domain.invalid wrote:

             "Good old buddy"],

puts "How are you? "
puts respond(gets.chomp)

Converted to a case statement (because I needed a break from work).

def respond(input)
case input
when “good”, “wonderful”, “ok”, “fantastic” then “Good old buddy”
when “bad”, “so-so” then “That’s rough”
else “no match”
end
end

puts "How are you? "
puts respond(gets.chomp)