Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [JAVA] uscire da un ciclo while?

    Salve a tutti

    premetto che ho poca esperienza di Java. Detto questo: ma da un ciclo while non si dovrebbe uscire immediatamente non appena cambia la condizione? Perché io ho due cicli innestati e da quello più interno, se l'utente preme X,devo uscire da entrambi. Io avrei fatto una cosa del genere (questa che ho scritto non è ovviamente quello che ho fatto, l'ho semplificata per farvi capire):

    codice:
    while (!tornaMenuPrincipale) {
               if (fotoTrovate.size() == 0) {
    		stampaMsgAvviso("Nessuna foto corrispondente al parametro cercato");
    	   } 	else {
    		sampaMsgAvviso("Inserire un ulteriore criterio di selezione");
    	   }
    					
    	   while (!ricercaAvviata) {	
    						
    			//Legge l'input dell'utente
    			cercaTitoloAv = creaCampoTitolo();
    						
    			//Se l'utente ha digitato 'x' o 'X', esce dal metodo		
                             if(cercaTitoloAv.equalsIgnoreCase("x")){
    				ricercaAvviata = true;
                                    tornaMenuPrincipale = true;
    			  } else {
                                   ...
                              }			
    	   } 
    }
    Il problema è nel pezzo in grassetto, cioè che non riesco a uscirne a meno che non metta un'etichetta al ciclo esterno e un break: etichetta nel momento in cui deve uscire. Ora mi viene il dubbio che evidentemente non abbia capito come funzioni davvero il while...

    Potete aiutarmi? Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Probabilmente non esci mai perche' non premi solamente x ma premi anche il carriage return/new line...

  3. #3
    Ehm... cos'è un carriage ?

    Comunque di base il processo funziona, perché quando legge l'input dell'utente restituisce il carattere giusto (x appunto) e le stesse linee di codice funzionano correttamente da altre parti :berto:

    Uff...

    Comunque grazie per la risposta

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    Esce dal ciclo While non appena ricontrolla la condizione (!ricercaAvviata)

    quindi il tuo programma esegue :

    ricercaAvviata = true;
    tornaMenuPrincipale = true;

    esce dall'if, salta l'else, esegue tutte le istruzioni presenti fino al '}' del ciclo while.
    Dopodichè torna a controllare la condizione dello while ed esce (poichè ricercaAvviata=true).

    spero di essere stato chiaro....

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    PS: non so se ho capito bene, ma hai un altro while annidato? se posti tutto il codice (almeno l'intestazione dei cicli) posso risolverlo subito (forse )

  6. #6
    Si, gli while sono due, li ho postati nel pezzo di codice. Ho messo una versione "lite" perché il pezzo di codice completo è lunghissimo e articolato (credo ).

    Il mio dubbio era proprio quello che hai scritto te, cioè controlla la condizione del while solo dopo aver scorso tutto quello che c'è dentro al ciclo. Invece io vorrei che uscisse immediatamente. Quindi non posso usare un booleano? Devo mettere direttamente un break?

    Comunque ti ringrazio molto per la risposta

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    sì devi mettere un break
    oppure potresti mettere tutto quello che c'è dopo dentro un if(!ricercaAvviata)
    cioè:
    ...
    if(cercaTitoloAv.equalsIgnoreCase("x")){
    ricercaAvviata = true;
    tornaMenuPrincipale =true;
    }
    else {
    ....
    }
    if(!ricercaAvviata)
    {
    ....
    //tutto il resto
    ....
    }
    }//end del ciclo while

  8. #8
    Eeh, la variabile ricercaAvviata ha anche un altro scopo, non posso fare come hai detto tu... ma ovviamente non potevi saperlo visto che non l'ho scritto

    Comunque ti ringrazio, mi hai chiarito le idee metterò un break e chiudo li' la cosa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.