Why does my program exit?!

T

Tim Romberg

Hi I was hoping that anyone could help me with this piece of code from
my program?! I have a menu with 2 submenus that you can reach from the
main menu. When I start the program I want the main menu to be presented
with a number of choices. My program is based on user input so naturally
when you enter the program you should be able to do the choices that are
presented in the menus. It worked before but now when I started adding
features for it(its for an assignment for a course) now it just presents
the menu and then exits the program. Can anyone help me with this. I
will post the code below and hopefully someone with more programming
skills than me can see the problem. Thanks!


module Menus
def self.getValidNumber
input = gets.chomp

while input > @options.size || input < 1 do
puts "cant do that try again."
input = gets.chomp
end

number = input.to_f
if (number <= 0)
puts "cant state a negative value."
getValidPositiveNumber
end
return number
end


def self.get_valid_input(options)

input = gets.chomp

while (!options.include?(input) && !options.include?(input.to_i))
puts "No good, you have to choose a value between " +
valid_options.inspect
input = gets.chomp
end
return input

end


class Menu

attr_reader :eek:ptions

# Pass in array of options
def initialize(options)
@options = options
end

def main_menu
puts "---------------------------"
puts " Main Menu"
@options.each_with_index do |item, i|
puts " #{i+1}. #{item}"
end
puts
puts "What do you want to do?"
end

def self.make_choice(choice)
# chooses something from the menu based on the choice
case choice
when 1
check_in
when 2
check_out
when 3
puts $in_menu = lists_menu
when 4
puts $in_menu = economy_menu
when 5
puts "You are now leaving the camping, welcome back!"
exit
end
end


def lists_menu
puts "---------------------------"
puts " List Menu"
@options.each_with_index do |item, i|
puts " #{i+1}. #{item}"
end
puts
puts "What do you want to do?"
end

def self.make_choice(choice)
case choice
when 1
puts $camping
when 2
puts $camping.history.all_guests
when 0
$in_menu = main.menu
end
end

def economy_menu
puts "---------------------------"
puts " List Menu"
@options.each_with_index do |item, i|
puts " #{i+1}. #{item}"
end
puts
puts "What do you want to do?"
end

def self.make_choice(choice)
case choice
when 1
$camping.economy.printCosts
when 2
$camping.economy.enterNewPrices
when 3
puts $camping.history
puts $camping.economy
when 0
$in_menu = MAIN_MENU
end
end

m = Menus::Menu.new ["Checkin", "Checkout","Lists","Economy","Exit"]
m.main_menu
if Menus == 3 then m = Menus::Menu.new ["List current guests","List all
guests","back to main menu"]
m.lists_menu
elsif Menus == 4 then m = Menus::Menu.new ["Price list","Edit price
list","back to main menu"]
m.economy_menu
end
end
end
 
D

David A. Black

Hi --

Hi I was hoping that anyone could help me with this piece of code from
my program?! I have a menu with 2 submenus that you can reach from the
main menu. When I start the program I want the main menu to be presented
with a number of choices. My program is based on user input so naturally
when you enter the program you should be able to do the choices that are
presented in the menus. It worked before but now when I started adding
features for it(its for an assignment for a course) now it just presents
the menu and then exits the program. Can anyone help me with this. I
will post the code below and hopefully someone with more programming
skills than me can see the problem. Thanks!

Let me turn the question around: why would you expect it not to exit? At
what point are you telling it to wait for user input?


David

--
David A. Black, Senior Developer, Cyrus Innovation Inc.

The Ruby training with Black/Brown/McAnally
Compleat Philadelphia, PA, October 1-2, 2010
Rubyist http://www.compleatrubyist.com
 
T

Tim Romberg

David said:
Hi --



Let me turn the question around: why would you expect it not to exit? At
what point are you telling it to wait for user input?


David

--
David A. Black, Senior Developer, Cyrus Innovation Inc.

The Ruby training with Black/Brown/McAnally
Compleat Philadelphia, PA, October 1-2, 2010
Rubyist http://www.compleatrubyist.com


Yes I know. I just were not sure how to incorporate the user input in a
good way. Do you have any tips?!
Regards.
 
D

David A. Black

Hi --

Yes I know. I just were not sure how to incorporate the user input in a
good way. Do you have any tips?!

Several, but I'm a bit skittish about directly answering questions that
are for homework assignments without knowing the details a little more
(whether it's for a grade, etc.). Chalk it up to my many years as a
professor :)


David

--
David A. Black, Senior Developer, Cyrus Innovation Inc.

The Ruby training with Black/Brown/McAnally
Compleat Philadelphia, PA, October 1-2, 2010
Rubyist http://www.compleatrubyist.com
 
T

Tim Romberg

David said:
Hi --



Several, but I'm a bit skittish about directly answering questions that
are for homework assignments without knowing the details a little more
(whether it's for a grade, etc.). Chalk it up to my many years as a
professor :)


David

--
David A. Black, Senior Developer, Cyrus Innovation Inc.

The Ruby training with Black/Brown/McAnally
Compleat Philadelphia, PA, October 1-2, 2010
Rubyist http://www.compleatrubyist.com

ok, well before I was reading the input like this def self.menu
puts "---------------------------"
puts " Menu"
puts " 1. Checkin"
puts " 2. Checkout"
puts " 3. List of current guests"
puts " 4. List of all guests"
puts " 5. Exit"
puts ""
puts " What do you want to do?"
puts "---------------------------"
print ": "
choice = get_input
make_choice(choice)
end
But with the current upgrade Im just receiving an undefined local
variable or method. So I was thinking instead something like this:
@options = gets.chomp. Is that stupid. I am terribly new at Ruby.
 
J

John Carter

[Note: parts of this message were removed to make it a legal post.]

On Sun, Sep 12, 2010 at 8:42 AM, Tim Romberg

But with the current upgrade Im just receiving an undefined local
variable or method. So I was thinking instead something like this:

Please send us the _exact_ error message AND the line it is whinging about.
That always helps.

The other major help is ALWAYS ALWAYS run ruby with the -w option and clean
up all the warnings. (Hey, that is true for any language!)



--
John Carter Phone : (64)(3) 358 6639
Tait Electronics Fax : (64)(3) 359 4632
PO Box 1645 Christchurch Email : (e-mail address removed)
New Zealand

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
=======================================================================
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top