Il modo ideale sarebbe quello di ri-factor il codice in modo che non hai più bisogno di una tale complessa struttura nested-loop. A seconda di come appare il resto del codice, i tuoi loop b
e c
possono essere candidati per diventare funzioni individuali, se non l'intero ciclo a
.
Dal momento che sembrano loop b
e c
iterare su intervalli adiacenti, perché non combinarli e ridurre un po 'il nesting del loop?
for (int a = 1; a <= 100; a++) //loop a (main loop)
{
int count = 1000;
while (count <= 3000) // combined loops 'b' and 'c'
{
if (count <= 2000)
{
// Old loop 'b' code
if (b == 1555)
goto fullbreak;
}
else
{
// Old loop 'c' code
...
}
count++;
}
}
fullbreak:
È inoltre possibile utilizzare una variabile di condizione al posto del goto
. Se si desidera interrompere il vecchio ciclo b
ma elaborare ancora il vecchio ciclo c
, è sufficiente impostare count = 2001
all'interno del vecchio codice ciclo b
.
Idealmente, si dovrebbe almeno essere in grado di ri-fattore questo per qualcosa di più simile
for (int a = 1; a <= 100; a++) //loop a (main loop)
{
if (process_inner_loop(pass, required, args))
break;
}
dove la funzione process_inner_loop
avvolge i tuoi originali due loop e restituisce diverso da zero se si vuole uscire il ciclo di chiusura. Ora, invece di utilizzare goto
o condizione variabili, si può semplicemente return 1;
.
Se sono stato informato correttamente, alcune lingue sostengono il costrutto 'rompere N' dove' n' è il numero di cicli annidati di uscire da. Ho ragione? –
@And http: // download-LLNW.oracle.com/javase/tutorial/java/nutsandbolts/branch.html – Anycorn
@Andreas: questo non è uno di questi. @sundowatch: rifatta il tuo codice, non solo risolverà il tuo problema, ma il tuo codice è più pulito e più gestibile. – GManNickG