¿Me resulta difícil entender qué significa este código Java?

Hola,

Hay muchas cosas diferentes que suceden en este código y es difícil de entender todo al mismo tiempo. Para entender cualquier código fuente, una buena estrategia siempre es tratar de dividirlo en “piezas independientes”.

En su ejemplo, primero intentemos profundizar en el método makeRange : como puede ver en la definición del método, este método recibe dos ints como argumentos ( inferior y superior ) y devuelve una matriz.

En la primera línea, el método crea una nueva matriz con el tamaño definido como (superior – inferior) + 1 . Esto parece un poco críptico, pero trate de asociar algunos números a los argumentos y las cosas serán más claras. Por ejemplo, si upper = 13 and lower = 4 , la expresión (upper – lower) + 1 devolverá 10 . Esto puede darle una pista sobre el objetivo del método, pero dejémoslo de lado por un momento.

La siguiente línea es un bucle for . Si tiene cierta comprensión de la programación, puede que sepa que se usa for para repetir un enunciado varias veces. En este caso específico, la condición dice i <range.length . Usando el mismo ejemplo del párrafo anterior, la expresión se traducirá a i <10 (porque el rango de la matriz tiene 10 elementos). Por lo tanto, como me inicialicé con 0 , el bucle se ejecutará 10 veces y la variable i tendrá valores 0, 1, 2, 3, 4, …, 8, 9 .

Ahora, concentrémonos en el contenido del bucle: rango [i] = inferior ++

Un detalle importante de este código es el operador ++ . Este operador en Java incrementa una variable después de haber sido evaluada. Para simplificar su comprensión, puede pensar en este fragmento como equivalente a:

rango [i] = más bajo;
más bajo = más bajo + 1;

Entonces, ya sabe que estas dos declaraciones se ejecutarán 10 veces, una para cada valor de i . También sabe que las declaraciones asignan el valor de la variable más bajo a la posición i del rango de la matriz, y luego se incrementa.

Usando nuestro ejemplo, esto será equivalente a:

Primera iteración ( i = 0, menor = 4 )

rango [0] = 4
inferior = 4 + 1

Segunda iteración ( i = 1, menor = 5 )

rango [1] = 5
inferior = 5 + 1

y así.

Luego, la última línea simplemente devuelve la matriz creada.

En este punto, usted comprende lo que hace el método makeRange : crea una matriz que contiene todos los números enteros entre la parte inferior y la superior .


El método main tiene una lógica más simple, pero utiliza más conceptos orientados a objetos. Seré más directo aquí, pero hágame saber si aún no está claro:

Línea 1 : declara una matriz de ints llamada rango (solo declara, esta variable no contiene nada todavía).

Línea 2 : crea una instancia de la clase RangeLister y la denomina lister . Tenga en cuenta que el método makeRange se ha definido dentro de esta clase; por lo tanto, necesita una instancia de la clase para invocar el método.

Línea 3 : invoca el método makeRange en la instancia de lister . Ya sabes que este método devolverá una matriz de enteros de 4 a 13 (porque estos son los argumentos pasados ​​al método). Esta nueva matriz se asigna al rango variable, que se había declarado anteriormente.

Línea 4 : Imprime el mensaje “La matriz: [“

Líneas 5-7 : es un bucle, similar en naturaleza a lo que expliqué anteriormente. Creo que puedes entender qué está haciendo este bucle, ¿verdad?

Sí, ¡imprimiendo cada elemento de la matriz que acaba de crear!

Línea 8 : Imprime el mensaje “]”


Espero que esta explicación te ayude.

Más consejos para entender cualquier código:
– escríbelo – no copiar y pegar!
– Ejecutarlo – muchas veces. Cambia los parámetros y mira que pasa.
– crear variaciones (¿puedes pensar en una forma fácil de crear una matriz de arriba a abajo?)

¡Verás que en poco tiempo captarás los códigos con mucha facilidad!

Este programa crea una matriz de enteros para el rango dado. Es decir, en el programa anterior, se llama al método makeRange () con los valores 4 y 13 como se muestra a continuación.

range = lister.makeRange (4, 13);

Por lo tanto, el método makeRange () devuelve una matriz de enteros con tamaño 10 y contiene elementos del 4 al 13.

ie int [] range = new int [10];
rango [0] = 4
rango [1] = 5
rango [2] = 6
.
.
.
rango [9] = 13

Esta matriz de rango se imprime a la consola en el método main ().