Hi all. I’m trying to learn ruby using about 5 books(!) but keep
struggling over basic things that are obvious to you guys but don’t
seem to be explained in a way my brain understands. Ruby is my first
programming language, by the way. Here is first one.
I have written this script (which works fine):-
target = 18…30
print 'please enter your age: ’
age = gets.chomp.to_i
if age < 18
puts ‘sorry, too young.’
elsif target === age
puts ‘have a great holiday.’
elsif age > 31
puts ‘sorry, too old.’
end
gets
What I want to do is put this in a method:-
def check_age(age)
print "Please enter your age: "
age = gets.chomp.to_i
eligible = 18…30
if age < 18
print “Sorry, too young.”
elsif eligible === age
print “Have a great holiday!”
else
print “Input not understood.”
check_age(age) # trying recursion here
end
check_age()
end
But it doesn’t work. How do I get the value entered by the user into
the method parameter?
def check_age(age)
eligible = 18…30
if age < 18
print “Sorry, too young.”
elsif eligible === age
print “Have a great holiday!”
true # provide a positive result
else
print “Input not understood.”
end
end
print "Please enter your age: "
check_age(gets.chomp.to_i)
of course I would use a case
make eligble a constant
and if required provide the flow control (probably not recursive) in
But it doesn’t work. How do I get the value entered by the user into
the method parameter?
def check_age
print "Please enter your age: "
age = gets.chomp.to_i
eligible = 18…30
if age < 18
print “Sorry, too young.”
elsif eligible === age
print “Have a great holiday!”
else
print “Input not understood.”
check_age # trying recursion here
end
end
check_age(age) # trying recursion here
end
check_age()
end
you don’t want recursion.
def check_age(age)
eligible = 18…30
if age < 18
print “Sorry, too young.”
elsif eligible === age
print “Have a great holiday!”
else
print “Input not understood.”
end
end
print "Please enter your age: "
age = gets.chomp.to_i
check_age(age)
It seems I didn’t need the parameter to the method. Also forgot to add
the second elsif (to check if too old). If I run the program and type
‘a’ instead of a two digit number the first if statement gets printed -
‘sorry too young’
what i want is for the else statement to be run if user input is not
entered as two digits. How would I do this? Somehow got to check if
gets recieves an integer of two digits.
what i want is for the else statement to be run if user input is not
entered as two digits. How would I do this? Somehow got to check if
gets recieves an integer of two digits.
use regex. if they enter a number it will match /\d+/
umm better use anchors to be sure they only enter a number
It seems I didn’t need the parameter to the method. Also forgot to add
the second elsif (to check if too old). If I run the program and type
‘a’ instead of a two digit number the first if statement gets printed -
‘sorry too young’
what i want is for the else statement to be run if user input is not
entered as two digits. How would I do this? Somehow got to check if
gets recieves an integer of two digits.
def check_age
print "Please enter your age: "
age = gets.chomp.to_i
eligible = 18…30
if age == 0
print “Please enter a two digits number in « 18…30 ».”
check_age
elsif eligible === age
print “Have a great holiday!”
else age < 18
print “Sorry, too young.”
end
end
check_age
the “gets.chomp.to_i” returns 0 when only alphabetic chars. ie :