Java - Matriz . length o matriz . lenght -1 ??

 
Vista:

Matriz . length o matriz . lenght -1 ??

Publicado por Guillermo (2 intervenciones) el 04/11/2021 04:00:43
Hola!

Tengo claro que la longitud es cuantos caracteres tiene una matriz/array, que es desde 1 hasta n, y que el indice es la dirección de cada valor, desde 0 hasta la longitud -1


Es decir.

Teniendo una matriz de 3x3, la longitud sería 3, tanto de columnas como filas.

Y los indices serían

00,01,02

10,11,12

20,21,22


En ese sentido, si quiero sumar la fila 2 (indice [2][columna]), tendria que sumar los indices 20+21+22


Es decir, en el for i iría desde 0 en la columna hasta el indice 2, entonces mi logica me dice que sería así:



for (int i = 0; i < matriz[0].length-1; i++) {

suma = suma + matriz[fila_Elegida][i];


}


Por que la longitud es 3, pero yo quiero ir hasta el indice 2, el indice 3 no existe.


Sin embargo cuando lo hago así, no me suma el ultimo valor, como si el indice fuera 3 pero ese indice no existe.


no se donde me perdí pero me rompe la cabeza esta duda
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Matriz . length o matriz . lenght -1 ??

Publicado por Kabuto (1381 intervenciones) el 04/11/2021 10:26:29
1
2
3
4
5
6
for (int i = 0; i < matriz[0].length-1; i++) {
 
suma = suma + matriz[fila_Elegida][i];
 
 
}

Ahí le estas diciendo que se repita mientras la i sea menor que length - 1

Si length es 3, entonces legth - 1 es 2.
Por tanto se va a repetir mientras la i valga 0 o valga 1. Si vale 2, ya no se repite, porque 2 no es menor que 2.
Por eso el último valor, que está en 2, no te lo coge

Has de cambiar la condición.
Bien diciendo que se repita mientras sea menor o igual que length - 1
1
2
3
4
5
6
for (int i = 0; i <= matriz[0].length-1; i++) {
 
suma = suma + matriz[fila_Elegida][i];
 
 
}

O bien, que es la forma más habitual, mientras sea menor que length

1
2
3
4
5
6
for (int i = 0; i < matriz[0].length; i++) {
 
suma = suma + matriz[fila_Elegida][i];
 
 
}


Es decir, no hace falta restarle - 1 a la longitud, siempre que le digamos que se repita mientras sea menor que dicha longitud
De este modo, se repetirá correctamente para los índices 0, 1 y 2. Porque todos son menores que 3, que es lo que vale el .length
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

Matriz . length o matriz . lenght -1 ??

Publicado por Guillermo (2 intervenciones) el 05/11/2021 02:54:36
Tienes razón, ahora entiendo, ayer me desesperé de no saber por qué, mi error era en interpretar como funciona la condicion del for, es "mientras que", como dices yo quería "mientras que y cuando"

Muchísimas gracias por la respuesta
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