Visualizzazione dei risultati da 1 a 10 su 11

Visualizzazione discussione

  1. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ok.
    Ho notato che nel metodo non effettui i controlli sulla correttezza semantica dell'orario: cioè, non verifichi che le ore siano nel range [0..23] e che minuti e secondi siano nel range [0..59].

    Io ora ti propongo due alternative. Una più o meno equivalente alla tua (che non effettua controlli semantici) senza usare il meccanismo delle eccezioni; un'altra che, invece, usa il meccanismo delle eccezioni ed in più effettua anche i controlli semantici di cui sopra. Prova a vedere se riesci a capire come funzionano.
    Ah... in entrambe le versioni il separatore usato nella stringa viene passato come argomento (come RegEx), così da rendere la funzione più generale.

    Versione 1:
    codice:
       private static int[] scanTime(String strOrario, String separatore) {
          int[] nums = {0, 0, 0};
    
          String[] hhmmss = strOrario.split( separatore );
          try {
             for(int i=0; i<3; i++) nums[i] = Integer.parseInt( hhmmss[i] );
          } catch (NumberFormatException nfe) { /* ignoro */ }
    
          return nums;
       }


    Versione 2:

    codice:
       private static int[] scanTime(String strOrario, String separatore) throws NumberFormatException {
          int[] nums = new int[3];
    
          String[] hhmmss = strOrario.split( separatore );
          for(int i=0; i<3; i++) nums[i] = Integer.parseInt( hhmmss[i] );
    
          // Controlli numerici
          if ((nums[0] < 0) || (nums[0] > 23)) throw new NumberFormatException("Valore non valido per le ore: " + hhmmss[0]);
          if ((nums[1] < 0) || (nums[1] > 59)) throw new NumberFormatException("Valore non valido per i minuti: " + hhmmss[1]);
          if ((nums[2] < 0) || (nums[2] > 59)) throw new NumberFormatException("Valore non valido per i secondi: " + hhmmss[2]);
    
          return nums;
       }

    Ciao.
    Ultima modifica di LeleFT; 11-12-2014 a 19:06
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.