Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]gestione eccezioni controllate

    Ciao sto da poco imparando le eccezioni e non riesco a capire un passaggio di questo esercizio:
    scrivi un programma che letta da tastiera un file gestisca le seguenti eccezioni:
    1) assenza del nome del file su linea di comando
    2) il file è inesistente
    3) dati relativi al file che non siano numeri interi
    codice:
    import java.util.*;
    import java.io.*;
    class Esami3{
        public static void main(String[] args)  {
            try{
            File f= new File(args[0]);
            Scanner leggiRiga = new Scanner(f);
            int k=1;
            while(leggiRiga.hasNextInt()){
                String riga = leggiRiga.nextLine();
            Scanner tokenizer = new Scanner(riga);
            tokenizer.useDelimiter("#");
                k++;
            }
            }catch (FileNotFoundException d){
                System.out.println("file inesistente");    
        }catch(ArrayIndexOutOfBoundsException a){
         System.out.println("non hai scritto nessun file");
     }catch(.....)
    }
    }
    il punto 1 e 2 penso di averli risolti solo che il punto 3 ho provato a risolverlo con il ciclo while ma non capisco con che tipo di eccezioni posso intercettarlo.Poi la prof ha consigliato di usare la classe scanner qui non è più facile utilizzare la classe stringtokenizer?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    il punto 3 ho provato a risolverlo con il ciclo while ma non capisco con che tipo di eccezioni posso intercettarlo.Poi la prof ha consigliato di usare la classe scanner qui non è più facile utilizzare la classe stringtokenizer?
    Se usi StringTokenizer, ottieni token come String. Se vuoi convertirli in int, c'è Integer.parseInt, che lancia NumberFormatException se la stringa è malformata (non un int).
    Se usi Scanner, il nextInt() lancia InputMismatchException se il token non è un int.

    P.S. un while con test del hasNextInt() che "protegge" il nextLine() ... ha ben poco senso.
    Ultima modifica di andbin; 08-02-2015 a 17:49
    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 el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ciao infatti con hasNextInt() non funziona...ma cosa vuol dire che "protegge" il nextLine()?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    ma cosa vuol dire che "protegge" il nextLine()?
    Se si fa un test con hasNextInt() e se true poi un nextInt(), si è sicuri che quest'ultimo non lancerà InputMismatchException e nemmeno NoSuchElementException. Questa è la "garanzia" a cui mi riferivo prima.
    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.