/ / Anidados para bucles - java, loops, for-loop, anidados

Anidados para bucles - java, loops, for-loop, anidados

Tengo una comprensión principiante decente de los bucles for normales, pero estoy teniendo problemas para abarcar los bucles anidados en Java.

En el problema en el que estoy trabajando, tengo una constanteentero que es un número máximo, y luego le pido al usuario 4 entradas de números diferentes. De esas 4 entradas, estoy tratando de determinar cuál de ellas puedo encajar "dentro" del entero constante que declare.

IE: si el entero constante es 30 y el usuario ingresa 5, 9, 3 y 21, les dirá que solo pueden usar 5, 9 y 3 porque el 21 sería demasiado grande para agregarlo.

El problema en la forma de la historia es que un usuario tiene unmochila que tiene una cierta cantidad de peso. El programa le pide al usuario que ingrese 4 pesos diferentes de artículos y luego decide qué artículos pueden caber en la bolsa.

Esto es para un proyecto de la escuela, así que estoy obligado a usar bucles anidados.

Respuestas

1 para la respuesta № 1

No he hecho ninguna JAVA, pero sé que C # es más o menos lo mismo.

Me gustaría hacer esto:

int max = 30;
int value = 0;
int counter = 0;
int[] input[4] = new int[5, 9, 3, 21];
bool[] canAddInput[4] = new bool[false, false, false, false];

for(value; value <= max; )
{
for(counter; counter < 4; counter++)
{
value += input[i];
if(value<=max)
canAddInput[i] = true;
}

if(counter >= 4)
Break;
}

0 para la respuesta № 2

Cualquier forma fácil de pensar en bucles anidados es ignorar el hecho de que están anidados. Por convención, normalmente usará i para el contador de incremento del bucle externo y j para el bucle interno, que es el más importantecosa para seguir recto al principio. Si ese es un punto de confusión para usted, es probable que le beneficie utilizar nombres más descriptivos para sus variables de incremento que las letras "i" y "j", por ejemplo outer y inner.

En un momento dado cuando intenta estructurar la lógica de su programa, solo necesita enfocarse en for donde trabajas más directamente adentro, al menos cuando estás empezando y aprendiendo sobre ellos por primera vez.


0 para la respuesta № 3

Para comprender los bucles anidados, puede comenzar con ejemplos simples y luego intentar con uno más difícil. Por ejemplo, supongamos que quieres hacer un contador.

int i, j;
for (i=0; i <= 9; i++)
{
for (j=0; j <= 9; j++)
{
System.out.println(i+""+j)
}
}

La salida es números del 00 al 99. Puede escribir la salida del bucle en un papel o algo para ver cómo funciona. Tomemos el ejemplo de este ciclo, tiene este resultado:

00 //here your program entered the outer loop, i has now the value 0, after that, you enter to the inner loop, i remains 0, but j will change in the next iteration
01 // you are still in the first iteration of the outer loop, but the inner loop is on the second
02 // and so on ....
03
04
05
06
07
08
09 // ... until the inner loop finished looping
10 // once the inner loop finished looping, the outer loop changes again, and we are back to the inner loop

Una vez que todo está claro en su mente, puede decidir cómo será su ciclo anidado. Qué variables se deben usar en el bucle externo, y qué variables para el bucle interno.