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

    [JAVA] Flag di uscita da foreach

    Salve,

    devo convertire dei numeri romani in numeri ordinali (es.: II=secondo) prelevando le informazioni da un file properties e dividendo la stringa iniziale in token per dividere le parole.
    Il programma funziona, solo che facendo il debug ho visto che anche se trova l'occorrenza di un numero romano corrispondente all'attuale token (cioè la parola attualmente "sotto esame"), il ciclo continua a verificare la corrispondenza con eventuali altri numeri romani.
    Vorrei ottimizzare il tutto e mettere una variabile di flag booleana "isFound" in modo da poter fermare il ciclo interno, un foreach, nel caso la trova.
    Per quanto stupida sia la cosa non ci riesco
    Ecco il codice:

    Codice PHP:
    public String applyPattern(String str) {
        
    tokenizer = new StringTokenizer(str);
        
    Set states properties.keySet();
        
    boolean isFound false;

        while (
    tokenizer.hasMoreElements()) {
            
    String token = (String) tokenizer.nextElement();

            for (
    Object key states) {
                
    // Se la stringa contiene la chiave avviene la sostituzione.
                // NB: La chiave è case-sensitive
                
    if (token.equals((String) key)) {
                    
    str replaceStr(str, (String) keyproperties
                            
    .getProperty((String) key));
                           
    // Ora vorrei settare isFound a true ed uscire dal foreach
                           // evitando un barbaro System.exit(0)
                           // Il while esterno deve invece continuare!
                    
    isFound true;
                }
        
            }
        }
        return 
    str;

    PS: replaceStr è un metodo da me realizzato che funziona.

    Grazie dell'attenzione,
    Matteo.
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Flag di uscita da foreach

    Originariamente inviato da matthew80
    // Ora vorrei settare isFound a true ed uscire dal foreach
    // evitando un barbaro System.exit(0)
    Semplicemente un break;
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    se ci butti un bel break;? male male un return;

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  4. #4
    Avrei preferito usare una variabile di flag, visto che avevo sempre visto i libri demonizzare l'uso dei break e continue, ma visto che funziona me lo tengo
    Devo dire che questa è la prima volta che uso il break (a parte l'uso che se ne fa nello switch ovviamente), però in effetti non saprei come fare altrimenti.

    Grazie tante.

    PS: Ho letto che il break serve per uscire dal blocco attuale. Per blocco intendiamo sempre il loop all'interno del quale si trova il break? Nel senso, anche se una istruzione di break si trova all'interno di un if cmq per blocco si intende il for all'interno del quale sta l'if e non l'uscita dal blocco if, in cui magari sono previste anche altre istruzioni al suo interno oltre al break...spero di essermi espresso chiaramente... :master:
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da matthew80
    PS: Ho letto che il break serve per uscire dal blocco attuale. Per blocco intendiamo sempre il loop all'interno del quale si trova il break? Nel senso, anche se una istruzione di break si trova all'interno di un if cmq per blocco si intende il for all'interno del quale sta l'if e non l'uscita dal blocco if, in cui magari sono previste anche altre istruzioni al suo interno oltre al break...spero di essermi espresso chiaramente... :master:
    break e continue possono essere con o senza "label" (etichetta). Senza label, il break termina il switch/while/do/for più interno e vicino al break.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.