Qual è la regola per il codice loop annidato?

0

Sono nuovo alla programmazione e attualmente sto imparando Java dal corso di apprendimento gratuito di Stanford. C'era questo incarico che avevo difficoltà a tradurre il mio algoritmo in codice. Mi sento come se avessi un'idea sbagliata riguardo ai cicli annidati.

La mia domanda in questo codice:

while (frontIsClear()) {   //LET THIS REFER AS BOOLEAN 1
  putBeeper();             //LET THIS REFER AS STAT 1
  if (frontIsClear()) {    // LET THIS REFER AS BOOLEAN 2
    move();                //LET THIS REFER AS STAT 2
  }
}

Se BOOLEAN 1 è VERO ma BOOLEAN 2 è FALSO, allora STAT 1 funzionerà o terminerà tutto?
Capisco che STAT 2 non funzionerà perché BOOLEAN 2 è falso ma non riesco a ottenere questo ciclo all'interno della condizione ecc.

    
posta Sadij 09.02.2015 - 05:25
fonte

2 risposte

4

Ogni ciclo in Java (e la maggior parte, ma non tutti i linguaggi di programmazione) ha un condizionamento del ciclo che viene controllato ogni iterazione. Funziona proprio come un'istruzione if : il condizionale è un'espressione booleana. Se si valuta su true, il ciclo viene eseguito. Se viene valutato come falso, il ciclo si arresta e il controllo passa all'istruzione successiva dopo il ciclo.

In questo codice, frontIsClear() viene utilizzato per controllare sia il while loop che il if condizionale. Se il metodo restituisce false in entrambi i casi, il corpo di tale costrutto (istruzione composta, tutto tra { e } ) non verrà eseguito.

    
risposta data 09.02.2015 - 05:54
fonte
0

Dipende ... Se il metodo putBeeper () ha qualche impatto su questa condizione; frontIsClear (), non chiama il metodo move () se l'istruzione condizionale diventa falsa.

Nel tuo esempio, non ci sono loop annidati. Ad esempio:

int i = 0;
while (frontIsClear()) {
 putBeeper();
 while (i<3) {
  move();
 }
}

Quindi sposterai 3 passaggi quando frontIsClear ().

    
risposta data 10.02.2015 - 11:32
fonte

Leggi altre domande sui tag