Java - Que pasa con este arreglo?

 
Vista:

Que pasa con este arreglo?

Publicado por lilu (112 intervenciones) el 19/07/2006 23:35:35
Buenas tardes, saludos a toda mi gente.

Me esta pasando algo curioso con un arreglo que tengo, el mismo esta compuesto de 22 casillitas, en cada una va un dato "float". La cuestion es que cuando lo voy a recorrer con un "for" toma desde el segundo valor (-3.0). Tengo entendido que en java el inicio de los arreglos comienzan en "0".

Les muestro el arreglo:

float[] areaFuera = new float[]{
-8.0f, -3.0f,
-4.0f, 5.0f,

-8.0f,-36.0f,
-4.0f,-30.0f,

-2.5f, -46.0f,
-1.0f, -45.0f,

-2.5f, -43.0f,
-1.0f, -42.0f,
.
.
.};
for(pr=0; pr<=22; pr++)
{
if(areaFuera[pr]<=cam.mx && areaFuera[pr+2]>=cam.mx && areaFuera[pr]<=cam.mz && areaFuera[pr+2]>=cam.mz){
System.out.println ("pr" + ":" + areaFuera[pr]);
System.out.println ("pr+2" + ":" + areaFuera[pr+1]);

El caso es que en los printf que ven alli en "pr" me muestra: -3.0
y en "pr+2": -4.0.

Debe ser una boberia que no puedo ver.

Por favor y gracias....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Que pasa con este arreglo?

Publicado por chuidiang (950 intervenciones) el 20/07/2006 05:53:19
Hola:

Veo muchas cosas en el código, pero al no estar todo no sé si es cierto.

Respondiendo a tu pregunta, si la condicion se cumple para pr=1, verás el -3.0 y pr+1 que es 4.0, justo lo que te está pasando. Estas haciendo System.out de "pr" y "pr+2", pero estás sacando por pantalla los valres de pr y pr+1 (más 1 y no más 2).

Si hay 22 valores, el bucle debe ser desde 0 hasta < 22 y no <=22. El valor 22 te dara indice fuera de rango.

Si en los if haces cosas como pr+1 y pr+2, el bucle debería ser de 0 a <20, de forma que cuando pr vale 19, pr+2 no se salga de rango y sigua siendo <22

Es decir, quedaría así

or(pr=0; pr<20; pr++)
{
if(areaFuera[pr]<=cam.mx && areaFuera[pr+2]>=cam.mx && areaFuera[pr]<=cam.mz && areaFuera[pr+2]>=cam.mz){
System.out.println ("pr" + ":" + areaFuera[pr]);
System.out.println ("pr+2" + ":" + areaFuera[pr+2]); //Cambiado el +1 por +2

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que pasa con este arreglo?

Publicado por lilu (112 intervenciones) el 20/07/2006 17:15:24
Ok, entiendio lo que me quieres decir, pero que pasa?, que yo comienzo el for desde el indice "0", es decir que tiene que MOSTRARME lo que esta en la posicion i[0] que es -8.0.

Desde alli es donde yo quiero que empiece el "for" y no desde la posicion 1, o sea: -3.0.

Hice todo lo que me indicaste y tienes razon, pero yo quiero que el for comienze a leer desde la primera posicion o sea -8.0.

Efectivamente el for esta asi:

for(pr = 0; pr < 20; pr++)
{
System.out.println ("pr" + ":" + areaFuera[pr]);
System.out.println ("pr+2" + ":" + areaFuera[pr+2]);
}

Por favor y gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que pasa con este arreglo?

Publicado por lilu (112 intervenciones) el 20/07/2006 17:22:54
Oookey!!.... ya lo vi, ya lo vi.... trankilos, gracias Chui!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar