java - tipos - ¿Manera eficiente de verificar la condición dentro de un ciclo do while?
sentencia while (7)
Proporcione más información sobre métodos. Si puede devolver la condición desde el método 1/2, intente:
do {
method1;
} while (!condition && !method2)
o si pasa por referencia y el método devuelve siempre verdadero:
while (method1 && !condition && method2 && !condition);
o:
while (!method1 && !method2);
EDITAR: si:
public boolean method1/2 { ... logic ... ; condition = true; return condition;}
es difícil depender de lo que harás.
Estoy usando un ciclo Do While, pero tengo que probar si esa condición se cumple a la mitad del ciclo, de modo que si se cumple, se saltará esa parte. ¿Hay una forma eficiente de hacer esto?
Por ejemplo, actualmente tengo algo como esto:
do {
method1;
if (!condition)
method2;
} while (!condition);
EDITAR: Me disculpo, no creo que dejé en claro en primer lugar. La condición comienza como falsa, y en algún punto durante el ciclo uno de los métodos establecerá la "condición" (global) en verdadero, en cuyo punto quiero que el ciclo finalice inmediatamente. Creo que es complicado tener que probar la condición final del ciclo y me preguntaba si había algo obvio que me faltaba.
Qué tal esto:
method1;
while (!condition) {
method2;
method1;
}
Supongo que lo que está buscando es evitar esta prueba adicional de eficiencia porque la "condición" no se cumple la mayor parte del tiempo (1 de muchos) ... Esta optimización se puede hacer profundizando en lo que realmente se hace en method1 y método2 (o en los datos que están manejando) y agregue un primer "paso falso" fuera del ciclo que desactivará el tratamiento del método2 solo la primera vez. Se vería así:
prepare_for_loop_entering
do {
method2
method1;
} while (!condition);
que tal esto?
while (!condition) {
method1;
if(!condition)
method2;
}
si la condition
es la misma en todos los lugares a los que se refiere que
do {
method1;
method2;
} while (!condition);
como en su condition
bucle while, siempre será falso ( !condition
será verdadera) a menos que lo establezca en verdadero en method1;
de lo que puedes simplemente break;
tan pronto como lo configure en verdadero en method1;
¿Qué tal el código a continuación?
if(condition)
break;
Use la forma más genérica de un bucle:
while (true)
{
method1;
if (!condition) break;
method2;
}
Explicación adicional
Un ciclo while con una condición "condición" es exactamente como sigue:
while (true)
{
if (condition) break;
method1;
method2;
}
Y un do-while es exactamente como:
while (true)
{
method1;
method2;
if (condition) break;
}
No queremos ninguno de esos, de ahí el código anterior.