java - sentencia - hacer-mientras y mientras comparación
sentencia do while (4)
La diferencia entre un do-while
y un while
es cuando se hace la comparación. Con un do-while
, lo comparará al final y, por lo tanto, realizará al menos una iteración.
Código equivalente para su ejemplo
do
{
i++;
++j;
System.out.println( i * j );
}
while ((i < 10) && (j*j != 25));
es equivalente a:
i++;
++j;
System.out.println( i * j );
while ((i < 10) && (j*j != 25)) {
i++;
++j;
System.out.println( i * j );
}
Comprensión general
Un bucle do-while
while es un bucle de salida controlada que significa que sale al final. Un bucle while es un bucle de entrada controlada que significa que la condición se prueba al principio y, como consecuencia, el código dentro del bucle podría incluso no ejecutarse.
do {
<block>
} while (<condition>);
es equivalente a:
<block>
while (<condition>) {
<block>
};
Caso de uso
Un caso de uso típico para un do-while
es el siguiente: le pregunta al usuario algo y desea repetir la operación mientras la entrada no es correcta.
do {
// Ask something
} while (input is not correct);
En ese caso, debe preguntar al menos una vez y, por lo general, es más elegante que usar un while
que requeriría duplicar el código, agregar una condición adicional o establecer un valor arbitrario para forzar la entrada al ciclo la primera vez.
Por el contrario, while
bucles son mucho más comunes y pueden reemplazar fácilmente un do-while
(no todos los idiomas tienen ambos bucles).
hacer-mientras:
do
{
i++;
++j;
System.out.println( i * j );
}
while ((i < 10) && (j*j != 25));
Estoy aprendiendo acerca de do-while vs en este momento y me gustaría reescribir el fragmento java anterior (ya declarado e inicializado) usando un tiempo en su lugar. Son los siguientes códigos reescritos la forma correcta de hacerlo:
mientras:
while ((i < 10) && (j*j != 25))
{
i++;
++j;
System.out.println( i * j );
}
Aclamaciones
Los bucles Do-While son bastante útiles para casos como estos, en los que le hace una pregunta al usuario y el usuario debe responder para que el programa finalice. Por ejemplo, este código:
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args) {
int answer;
do {
System.out.println("What is 5+5?");
Scanner scan = new Scanner(System.in);
answer = scan.nextInt();
} while (answer != 10);
}
}
No, los dos códigos no son equivalentes. do-while
solo comprueba la condición al final del ciclo, de modo que i++
, ++j
y System.out.println(i * j)
producen al menos una vez, independientemente de los valores iniciales de i
y j
. while
salta todo el ciclo si la condición no es true
por primera vez que se ingresa el ciclo.
Puede lograr el mismo efecto con while
copiando el cuerpo del bucle una vez antes del bucle, por ejemplo.
La diferencia clave entre do-while
y while
, con do-while
le garantiza al menos una ejecución de su código antes de los controles.
* No necesita ser más complicado que eso.