String > Integer Conversion Problem

Retro thanks to all who helped me with my last post. I’m certainly more
comfortable with Ruby now than then, but still a newbie as the following
will surely demonstrate.

Below, you can see that I’m checking command-line arguments to the
program for various conditions. Unfortunately, because the args are
stored as strings, when I convert them via to_i, empty and non-numerical
strings become 0. 0 is an acceptable element in this program, therefore
I can’t use it to test for invalid input. I’ve worked around this (sort
of), by creating two sets of variables for the arguments (one set as
strings, one set as integers). Unfortunately, this complicates the
code, and more importantly, leaves me stumped concerning how to test for
non-numeric values.

So, the program does what I want, except when the args are non-numeric
strings, and the code seems uglier than it ought to be.

-ELf

def gen_chart(max)
x=0
y=0
local_chart = Array.new
while x<=max
y+=x
local_chart[x]=y
x+=1
end
local_chart
end

arg0 = ARGV[0]
arg1 = ARGV[1]

arg0i = ARGV[0].to_i
arg1i = ARGV[1].to_i

if arg0.nil? or (arg0i < 0) or (arg1i < 0)
#print usage
print <<-EOS

No args, or bad args!

Usage: #\$0 [maxvalue]
#\$0 [minvalue] [maxvalue]
EOS
elsif arg1.nil?
#do chart to arg0, print last pair
chart = gen_chart(arg0i)
puts arg0i.to_s + ": " + chart[arg0i].to_s
else
#do chart to arg1, print pairs from arg0 to last
chart = gen_chart(arg1i)
x=arg0i
y=arg1i
while x<=y
puts x.to_s + ": " + chart[x].to_s
x+=1
end
end