A complete beginners question

A

Ant Walliams

Hi there,

Sorry this is probably going to be a real easy question but I am totally
new to programming.

I was following some tutorial online and at the end of the first chapter
it said 'Now create a program that asks the user for a number and then
suggests a higher number as a better option.

So what I wanted to happen below is it takes the users input and just
adds 1 to it. But is is coming back with "rb:3:in '+' can't convert
fixnum into string'

puts 'What is your favourite number?'
number = gets.chomp
number+=1
puts 'Do you not think' + number + 'is a better number?'

Any help would be appreciated its doing my head in.

Thanks
 
R

Reid Thompson

Hi there,
puts 'What is your favourite number?'
number = gets.chomp
number+=1
puts 'Do you not think' + number + 'is a better number?'
puts 'Do you not think' + number.to_s + 'is a better number?'
 
A

Ant Walliams

Reid said:
puts 'Do you not think' + number.to_s + 'is a better number?'

Thank for the reply but I am still getting the same error even after
making your changes. Any ideas?

Thanks
Ant
 
R

Rob Biedenharn

Thank for the reply but I am still getting the same error even after
making your changes. Any ideas?

Thanks
Ant

the problem is with number+=1

number is a string because gets.chomp is a string

number+=1 is syntactic sugar for
number = number + 1

And the expression number + 1 is trying to add 1 (a Fixnum) to a string

Try changing:

number = gets.chomp.to_i

to convert the string into an integer (which if small enough will be
held in an instance of Fixnum).

Then, you'll have the opposite problem with the last line unless you
incorporate Reid's suggestion.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)
 
J

J-H Johansen

Thank for the reply but I am still getting the same error even after
making your changes. Any ideas?

Thanks
Ant

You need to convert the input from String to Fixnum

puts "What is your favourite number?"
number =3D gets.chomp.to_i
number+=3D1
puts "Do you not think #{number} is a better number?"


--=20
Jens-Harald Johansen
 
A

Ant Walliams

Rob said:
the problem is with number+=1

number is a string because gets.chomp is a string

number+=1 is syntactic sugar for
number = number + 1

And the expression number + 1 is trying to add 1 (a Fixnum) to a string

Try changing:

number = gets.chomp.to_i

to convert the string into an integer (which if small enough will be
held in an instance of Fixnum).

Then, you'll have the opposite problem with the last line unless you
incorporate Reid's suggestion.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)


Thank you very much, that worked. And thanks for the explanation of how
it works as well, that really helps.

Thanks
Ant
 
J

Jaime Gonzalez

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

Hi, just do this:

puts "What is your favourite number?"
number = gets.chomp
number+=1
puts "Do you not think #{number.to_s} is a better number?"

Best regards.
 
A

Angus Hammond

Hi there,

Sorry this is probably going to be a real easy question but I am totally
new to programming.

I was following some tutorial online and at the end of the first chapter
it said 'Now create a program that asks the user for a number and then
suggests a higher number as a better option.

So what I wanted to happen below is it takes the users input and just
adds 1 to it. But is is coming back with "rb:3:in '+' can't convert
fixnum into string'

puts 'What is your favourite number?'
number = gets.chomp
number+=1
puts 'Do you not think' + number + 'is a better number?'

Any help would be appreciated its doing my head in.

Thanks
When you call gets.chomp it returns a string (lets say it's "5"). That
looks like a number to you and me but ruby treats it as text. You need
to tell ruby to make it a number using .to_i.
ie The second line should read gets.chomp.to_i

Then ruby will be adding 5+1 and not "5"+1. I found that a good way to
think of this was to replace "5" with a word or something. Could you do
"hello"+1?

Angus
 
E

Emma Pidre

Hi, i am in Osx and i had installed Ruby 1.8.7. I want to make a
tutorial, i am a beginner in ruby. My problem is that when i want to
execute a program on ruby, example: code.rb, with "ruby code.rb" on
Terminal, like all tutorials sais, a error come back: "-bash: code.rb:
command not found"

Well, there is a part that i am missing. Please help me.
 
F

Francesco Vollero

Il 29/05/10 21.43, Emma Pidre ha scritto:
Hi, i am in Osx and i had installed Ruby 1.8.7. I want to make a
tutorial, i am a beginner in ruby. My problem is that when i want to
execute a program on ruby, example: code.rb, with "ruby code.rb" on
Terminal, like all tutorials sais, a error come back: "-bash: code.rb:
command not found"

Well, there is a part that i am missing. Please help me.
It's ok, you want to run it as a normal command if i understand well.
First thing to do, is adding a "shebang"[1] at top of your ruby file.
After that, you have to make it executable, and, to do it you have to
write on bash command line, chmod +x code.rb and voilà, your ruby script
as executable in this way: ./code.rb

Have fun with ruby,
-Francesco



[1] shebang: "/usr/bin/env ruby"
 
J

Josh Cheek

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

Hi, i am in Osx and i had installed Ruby 1.8.7. I want to make a
tutorial, i am a beginner in ruby. My problem is that when i want to
execute a program on ruby, example: code.rb, with "ruby code.rb" on
Terminal, like all tutorials sais, a error come back: "-bash: code.rb:
command not found"

Well, there is a part that i am missing. Please help me.
Expounding on Francesco's answer:

# add a shebang to the top of a file called hello_world.rb
# this directs the system(?) to use Ruby to interpret the file
$ echo '#!/usr/bin/env ruby' > hello_world.rb

# append a statement that will output "hello world" to hello_world.rb
$ echo 'puts "hello world"' >> hello_world.rb

# set permissions of hello_world.rb so that you can execute it
$ chmod 755 hello_world.rb

# execute hello_world.rb and see that it outputs "hello world"
# the ./ in front is important, it says the file is located in the current
directory
$ ./hello_world.rb
hello world
 
F

Francesco Vollero

Il 30/05/10 13.20, Josh Cheek ha scritto:
Expounding on Francesco's answer:

# add a shebang to the top of a file called hello_world.rb
# this directs the system(?) to use Ruby to interpret the file
$ echo '#!/usr/bin/env ruby'> hello_world.rb

# append a statement that will output "hello world" to hello_world.rb
$ echo 'puts "hello world"'>> hello_world.rb

# set permissions of hello_world.rb so that you can execute it
$ chmod 755 hello_world.rb

# execute hello_world.rb and see that it outputs "hello world"
# the ./ in front is important, it says the file is located in the current
directory
$ ./hello_world.rb
hello world
You're right, maybe my answer can get someone confused, to be 100% sure,
Josh, let me write a ruby script :)

ruby_sample.rb:
 
E

Emma Pidre

Hi, trhans for the answer. This is not working. I saw that already had
the first line of code in the example i trying to run : "#!/usr/bin/env
ruby".

The error is the same:
"ruby: No such file or directory -- ./code.rb (LoadError)"

The person who sold me the Macbook, said to me that he made some
troubles with ruby. I don't know what is wrong, maybe is a configuration
troubles or something like that. i can use directly from textMate, but i
want to resolve the problem form Terminal, to be more sure that all work
fine.

there is a way for restart ruby, i mean, unistall o delete all files or
something like that for make a re-install later ? What did you advise
me?

Thanks for all ! :) im very happy to find i place where find help.
 
J

Josh Cheek

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

Hi, trhans for the answer. This is not working. I saw that already had
the first line of code in the example i trying to run : "#!/usr/bin/env
ruby".

The error is the same:
"ruby: No such file or directory -- ./code.rb (LoadError)"

The person who sold me the Macbook, said to me that he made some
troubles with ruby. I don't know what is wrong, maybe is a configuration
troubles or something like that. i can use directly from textMate, but i
want to resolve the problem form Terminal, to be more sure that all work
fine.

there is a way for restart ruby, i mean, unistall o delete all files or
something like that for make a re-install later ? What did you advise
me?

Thanks for all ! :) im very happy to find i place where find help.
Please follow the instructions above, exactly, and let us know whether the
hello world example works. (ie if it did not work, it should not have said
anything about code.rb)
 
K

Karthikeyan A K

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

puts 'What is your favourite number?'
number = gets.chomp
number = number.to_i # converts the number from String to Integer
number+=1
puts 'Do you not think' + number + 'is a better number?'

Hi there,

Sorry this is probably going to be a real easy question but I am totally
new to programming.

I was following some tutorial online and at the end of the first chapter
it said 'Now create a program that asks the user for a number and then
suggests a higher number as a better option.

So what I wanted to happen below is it takes the users input and just
adds 1 to it. But is is coming back with "rb:3:in '+' can't convert
fixnum into string'

puts 'What is your favourite number?'
number = gets.chomp
number+=1
puts 'Do you not think' + number + 'is a better number?'

Any help would be appreciated its doing my head in.

Thanks


Regards
A.K.Karthikeyan,
Prop. Mind As Lab
http://mindaslab.in
 
G

Guten

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

The final solution is look like this:

puts 'What is your favourite number?'
number = gets.chomp.to_i
number +=1
puts 'Do you not think #{number} is a better number?'
 
J

Josh Cheek

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

The final solution is look like this:

puts 'What is your favourite number?'
number = gets.chomp.to_i
number +=1
puts 'Do you not think #{number} is a better number?'

You don't need chomp.

"1\n".to_i # => 1
"1".to_i # => 1
 

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

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top