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
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
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
You’d get gets.chomp for fine and use fine==“good” for direct
comparison.
-xiaofeng
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
< Your code
fixed code
< fine = gets
fine = gets.chomp
< if fine.String==“good”
if fine == “good”
----- Original Message -----
From: “viswesh” [email protected]
Newsgroups: comp.lang.ruby
To: “ruby-talk ML” [email protected]
Sent: Wednesday, May 17, 2006 9:46 AM
Subject: Please answer to this code?
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
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
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)
You’d get gets.chomp for fine and use fine==“good” for direct
comparison.
-xiaofeng
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.
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)
On 5/18/06, viswesh [email protected] 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
On 5/18/06, Patrick H. [email protected] 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
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)
On 5/19/06, Chris K. [email protected] 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)