2011-05-24 16 views
37

Estaba buscando "Cómo dar varias condiciones en un ciclo for?" Pero no hay respuestas directas dadas.Dando múltiples condiciones en for loop en Java

Después de algunas investigaciones encontré la forma correcta. Las condiciones no deben estar separadas por coma (,) o punto y coma (;). Podemos usar el operador & & para unir ambas condiciones.

para (inicialización; condición1 & & condición2; incremento)

Ejemplo:

for(int j= 0; j < 6 && j < ((int)abc[j] & 0xff) ; j++) 
{ 
// 
} 

Esperanza esto ayuda a los nuevos desarrolladores de Java.

+5

¿Y tu pregunta es? – trojanfoe

+3

JavaBits, su publicación no es una pregunta y, sinceramente, evitaría las expresiones complejas en los bucles for - mejor sería mantener su código simple y legible. –

+0

esto fue solo para información. – JavaBits

Respuesta

32

También puede utilizar "o" operador,

for(int i = 0 ; i < 100 || someOtherCondition() ; i++) { 
    ... 
} 
+0

ya está bien. – JavaBits

+0

¡Funciona, gracias! – dark

0

Si prefiere un código con un bonito aspecto, se puede hacer una pausa:

for(int j = 0; ; j++){ 
    if(j < 6 
    && j < ((int) abc[j] & 0xff)){ 
     break; 
    } 

    // Put your code here 
} 
+0

en realidad, no creo que esta versión se vea más bonita que la misma expresión dentro del constructo for (...). –

+0

Esto tiene una mejor apariencia para casos complejos. –

0

Si usted quiere hacer eso no ir con un tiempo, para la tranquilidad? : P No, pero en serio, yo no sabía eso y parece un poco agradable así que gracias, ¡es bueno saberlo!

4

Es posible utilizar múltiples variables y condiciones en un bucle for como en el ejemplo que se muestra a continuación.

for (int i = 1, j = 100; i <= 100 && j > 0; i = i - 1 , j = j-1) { 
    System.out.println("Inside For Loop"); 
} 
0

También puede reemplazar la condición complicada con la llamada de un solo método para que sea menos malo en el mantenimiento.

13

Un básico para la declaración incluye

  • declaraciones 0..n de inicialización (ForInit)
  • 0..1 declaraciones de expresión que se evalúan como boolean o Boolean (ForStatement) y
  • 0..n instrucciones de actualización (ForUpdate)

si necesita varias condiciones para construir su ForStatement, a continuación, utilizar los operadores lógicos estándar (&&, ||, |, ...) pero - Es mejor utilizar un método privado si se pone a complicado:

for (int i = 0, j = 0; isMatrixElement(i,j,myArray); i++, j++) { 
    // ... 
} 

y

private boolean isMatrixElement(i,j,myArray) { 
    return (i < myArray.length) && (j < myArray[i].length); // stupid dummy code! 
} 
+0

tan embarazoso que no sabía que se permitían declaraciones múltiples en la inicialización y actualización de un bucle for en java. ¿Es esta una de esas cosas que existen pero que deberían usarse con moderación? probablemente debido a la legibilidad –