Uscita forzata da un ciclo for

di il
4 risposte

Uscita forzata da un ciclo for

Ciao,
non capisco per quale motivo inserendo un break all’interno di un ciclo for, quest’ultimo non si interrompa.

Questo metodo fa parte di una classe che viene invocata 1 sola volta da un AsyncTask. Passo al costruttore un URL, e in base a quest’ultimo devono accadere delle cose (niente di speciale, o giochi di prestigio).

La classe deve solo recuperare dei dati dal web, e in effetti svolge il suo compito, però volendo prevenire un qualsiasi dato mancante ho pensato di inserire un controllo con l’eventuale uscita dal loop, ma questo, appunto, non accade.
private void deiDati(String tag) {
        Elements tdElem = doc.select(tag);
        for (Element td : tdElem.select("td")) {
            if(!td.text().matches("\\.+")) { //il tag non deve contenere (...)
                lista.add(td.text()));               
            } else {
                Log.i("provaDati ", "qualcosa è andato storto... " + url);
                lista.clear();
                break;
            }
        }
    }
Allora, dove sbaglio? Quel ciclo non dovrebbe interrompersi?
Se sì, perché continua a stamparmi all'infinito «...qualcosa è andato storto»?

4 Risposte

  • Re: Uscita forzata da un ciclo for

  • Re: Uscita forzata da un ciclo for

    La tua risposta mi fa pensare che probabilmente il controllo va inserito da un’altra parte, beh, potrebbe starci. Può essere che il task se ne freghi altamente del mio break e continui ad invocare la classe?
    E no! Non ho inserito alcun while, c’è solo una barra che avanza in base alla dimensione della lista.
    Va beh, proverò ad apportare alcune modifiche…

    Grazie Andrea.
  • Re: Uscita forzata da un ciclo for

  • Re: Uscita forzata da un ciclo for

    andbin ha scritto:


    No, non c'entrano niente multi-threading, task, ecc..
    Se dentro un ciclo si arriva ad un break, il ciclo TERMINA. Fine della storia.
    Esatto, questo è ciò che mi aspetto da un break.

    Sai cosa… adesso che ci penso, quando ho provato quel codice, dentro il blocco else era presente una chiamata ricorsiva. Evidentemente non era scritto bene il codice che controllava la cosa per cui veniva invocato lo stesso metodo…

    Sì, è sicuramente questo il motivo.

    Mistero risolto!
Devi accedere o registrarti per scrivere nel forum
4 risposte