Confusion with while loop

M

Michael W. Ryder

I am trying to create a method that would allow one to skip x number of
a character then change the next y number of a character. While trying
to create a simple routine I ran into two "weird" problems. The code
follows:

a = "1 2 1 3 1 4 1 5 1 6 1 7"
ns = 2, nc = 2

i = 0, il = a.length, xs = 0, xc = 0
while xs < ns
if a[i, 1] == "1"
xs += 1
end
i += 1
end

puts a[i, -1]

In this incarnation trying to run the code returns the following error:
testing.rb:5:in `<': comparison of Fixnum with Array failed
(ArgumentError). If I change ns in the while statement to 2 I get the
following error: testing.rb:6:in `[]': can't convert Array into Integer
(TypeError).

I can't see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer. I also can't figure out
why I get the error message in the following line when I have used that
code in other places with no problems. I must be missing something but
I can't figure out what it is.
 
A

Alex Young

Michael said:
I am trying to create a method that would allow one to skip x number of
a character then change the next y number of a character. While trying
to create a simple routine I ran into two "weird" problems. The code
follows:

a = "1 2 1 3 1 4 1 5 1 6 1 7"
ns = 2, nc = 2

i = 0, il = a.length, xs = 0, xc = 0
while xs < ns
if a[i, 1] == "1"
xs += 1
end
i += 1
end

puts a[i, -1]

In this incarnation trying to run the code returns the following error:
testing.rb:5:in `<': comparison of Fixnum with Array failed
(ArgumentError). If I change ns in the while statement to 2 I get the
following error: testing.rb:6:in `[]': can't convert Array into Integer
(TypeError).

I can't see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer.
It's not, though - run just this line, and check the values of ns and nc:

ns = 2, nc = 2

I think you want:

ns, nc = [2,2]
 
M

Michael W. Ryder

Alex said:
Michael said:
I am trying to create a method that would allow one to skip x number
of a character then change the next y number of a character. While
trying to create a simple routine I ran into two "weird" problems.
The code follows:

a = "1 2 1 3 1 4 1 5 1 6 1 7"
ns = 2, nc = 2

i = 0, il = a.length, xs = 0, xc = 0
while xs < ns
if a[i, 1] == "1"
xs += 1
end
i += 1
end

puts a[i, -1]

In this incarnation trying to run the code returns the following
error: testing.rb:5:in `<': comparison of Fixnum with Array failed
(ArgumentError). If I change ns in the while statement to 2 I get the
following error: testing.rb:6:in `[]': can't convert Array into
Integer (TypeError).

I can't see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer.
It's not, though - run just this line, and check the values of ns and nc:

ns = 2, nc = 2

I think you want:

ns, nc = [2,2]

Or ns =2; nc =2. I knew it had to be something simple. Thats the
problem with programming in multiple languages at the same time, they
each do the same things slightly differently. Thanks for pointing that out.
 
R

Robert Klemme

2007/7/31 said:
Alex said:
Michael said:
I am trying to create a method that would allow one to skip x number
of a character then change the next y number of a character. While
trying to create a simple routine I ran into two "weird" problems.
The code follows:

a = "1 2 1 3 1 4 1 5 1 6 1 7"
ns = 2, nc = 2

i = 0, il = a.length, xs = 0, xc = 0
while xs < ns
if a[i, 1] == "1"
xs += 1
end
i += 1
end

puts a[i, -1]

In this incarnation trying to run the code returns the following
error: testing.rb:5:in `<': comparison of Fixnum with Array failed
(ArgumentError). If I change ns in the while statement to 2 I get the
following error: testing.rb:6:in `[]': can't convert Array into
Integer (TypeError).

I can't see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer.
It's not, though - run just this line, and check the values of ns and nc:

ns = 2, nc = 2

I think you want:

ns, nc = [2,2]

Or ns =2; nc =2. I knew it had to be something simple. Thats the
problem with programming in multiple languages at the same time, they
each do the same things slightly differently. Thanks for pointing that out.

These are options, too:

ns, nc = 2, 2
ns = nc = 2

Kind regards

robert
 
M

Michael W. Ryder

Robert said:
2007/7/31 said:
Alex said:
Michael W. Ryder wrote:
I am trying to create a method that would allow one to skip x number
of a character then change the next y number of a character. While
trying to create a simple routine I ran into two "weird" problems.
The code follows:

a = "1 2 1 3 1 4 1 5 1 6 1 7"
ns = 2, nc = 2

i = 0, il = a.length, xs = 0, xc = 0
while xs < ns
if a[i, 1] == "1"
xs += 1
end
i += 1
end

puts a[i, -1]

In this incarnation trying to run the code returns the following
error: testing.rb:5:in `<': comparison of Fixnum with Array failed
(ArgumentError). If I change ns in the while statement to 2 I get the
following error: testing.rb:6:in `[]': can't convert Array into
Integer (TypeError).

I can't see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer.
It's not, though - run just this line, and check the values of ns and nc:

ns = 2, nc = 2

I think you want:

ns, nc = [2,2]
Or ns =2; nc =2. I knew it had to be something simple. Thats the
problem with programming in multiple languages at the same time, they
each do the same things slightly differently. Thanks for pointing that out.

These are options, too:

ns, nc = 2, 2

Maybe this is where I got confused. I remember seeing commas between
variables, just forgot the way they had to be entered. Thanks for
pointing this out.
 

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,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top