From: Morton Goldberg Date: 2006-07-19T19:35:05+09:00 Subject: Re: more newbie help with classes and methods please There are two forms of case block and you have sort of mixed them up. Either of the following defs of double_it will work. I think the first, using a case without a target, is probably what you want, but the second, a case with a target (compares target to pattern with ===), can be made to work, too. Hope this helps. def double_it print "Please enter a whole number (or type 'h' for help) : " num = gets.chomp case when num == 'h' puts "A whole number is 45 for example, or 12564." double_it when (n = num.to_i) > 1 puts n * 2 # doubling not squaring else puts "Input must be positive number!" double_it end end double_it print "Press any key to exit: " STDIN.getc def double_it print "Please enter a whole number (or type 'h' for help) : " num = gets.chomp case num when 'h' puts "A whole number is 45 for example, or 12564." double_it when /^[^-]\d+/ puts num.to_i * 2 # doubling not squaring else puts "Input must be positive number!" double_it end end double_it print "Press any key to exit: " STDIN.getc Regards, Morton On Jul 19, 2006, at 5:05 AM, simonh wrote: > decided to have a go at using the case statement. Why won't this work? > > ---------------------------------------------------------------------- > --------------- > def double_it > print "Please enter a whole number (or type 'h' for help) : " > num = gets.chomp > case num > when num == 'h' > puts > puts "A whole number is 45 for example, or 12564." > puts > when num.to_i > 1 > num * num > print num.to_s > when num.to_i <= 0 > puts "The number must be positive!" > end > end > double_it > gets > ---------------------------------------------------------------------- > ---------------- > >