Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    JAVA: problema Lettura file con gestione errori

    Non riesco a spostare questa discussione in Java forum, possono farlo i moderatori? Grazie.

    Salve, devo correggere l'esame di java che ho fatto 2 giorni fa e velocemente ma ho un unico problema per passare l'ultimo test:

    Devo caricare linee da un file di testo con formato:

    1;A;Giuseppe;Verdi
    4;B;Mario;Bianchi

    Ora, devo ritornare false quando ho un errata lettura delle informazioni come per esempio:

    1;A;
    4;B;Mario;Bianchi

    In questo caso la prima linea non è completa.
    queste informazioni vengono salvate in una classe Prenotazioni fatta così:
    Codice PHP:
    public class Prenotazione {
        
    String passeggero;
        
    int fila;
        
    String posto;
        public 
    Prenotazione(Passeggero passint filaString posto) {
            
    this.passeggero pass.getNome() + " " pass.cognome;
            
    this.fila fila;
            
    this.posto posto;
        }
        public 
    String passeggero() {
            return 
    passeggero;
        }
        public 
    int fila() {
            return 
    fila;
        }
        public 
    String posto() {
            return 
    posto;
        }

    Con classe Passeggero (molto semplice):
    Codice PHP:
    public class Passeggero {
        
    String nome;
        
    String cognome;
        public 
    Passeggero(String nomeString cognome) {
            
    this.nome nome;
            
    this.cognome cognome;
        }
        public 
    String getNome() {
            return 
    nome;
        }
        public 
    String getCogome() {
            return 
    cognome;
        }

    La classe della lettura l'ho scritta così ma...non so bene come continuare:
    p.s.: mi conviene usare lo StringTokenizer?
    Codice PHP:
    public boolean caricaPrenotazioni(String filethrows IOException {
            
    LinkedList<Prenotazioneprenot_nuove = new LinkedList<Prenotazione>();
            
    BufferedReader in;
            
    String posto;
            
    String nome;
            
    String cognome;
            
    int fila;
            try {
                
    in = new BufferedReader(new FileReader(file));
            } catch (
    FileNotFoundException fnfe) {
                return 
    false;
            }
            while (
    true) {
                try {
                    
    String line1 in.readLine();
                    if (
    line1 != null) {
                        
    fila Integer.parseInt(line1.substring(0line1.indexOf(';')));
                        
    line1 line1.substring(line1.indexOf(';') + 1);
                        
    posto line1.substring(0line1.indexOf(';'));
                        
    line1 line1.substring(line1.indexOf(';') + 1);
                        
    nome line1.substring(0line1.indexOf(';'));
                        
    line1 line1.substring(line1.indexOf(';') + 1);
                        
    cognome line1.substring(0);
                        
    Passeggero passeggero = new Passeggero(nomecognome);
                        
    Prenotazione prenotazione = new Prenotazione(passeggero,
                                
    filaposto);
                        
    prenot_nuove.add(prenotazione);
                        
    prenotazioni prenot_nuove;
                    }
                } catch (
    IOException ioe) {
                    return 
    false;
                }
                
    in.close();
            }
        } 
    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Java ha la sua bella sezione dedicata.
    Tutte le discussioni sull'argomento vanno trattate lì.


    Ti sposto.


    Ciao.
    "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

  3. #3
    Ciao potresti usare string.split() che ti ritorna un array di stringe e fai il controllo

    ulla lunghezza dell'array

    per esemio :

    String[] dati = line1.split(";");

    if(dati.length==4){
    fila = dati[0];
    posto = dati[1];
    nome = dati[2];
    cognome = dati[3];
    }else {
    return false;

    }

  4. #4
    Che stupido hai proprio ragione! Grazie proverò a farlo. Ti darò conferma.

    Per caso con l'inserimento di un try/catch riusciresti a mostrarmi la soluzione?

    Grazie ancora

  5. #5
    per esempio nell try catch qui puoi fare cosi
    Codice PHP:
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.LinkedList;

    public class 
    sdasd{
        public 
    boolean caricaPrenotazioni(String filethrows IOException {
            
    LinkedList<Prenotazioneprenot_nuove = new LinkedList<Prenotazione>();
            
    BufferedReader in;
            
    String posto null;
            
    String nome null;
            
    String cognome null;
            
    int fila 0;
            
    boolean checkprenotazioni;
            try {
                
    in = new BufferedReader(new FileReader(file));
            } catch (
    FileNotFoundException fnfe) {
                return 
    false;
            }
            while (
    true) {
                try {
                    
    String line1 in.readLine();
                    
    String[] dati line1.split(";");

                    if(
    dati.length==4){
                        
    fila Integer.parseInt(dati[0]);
                        
    posto dati[1];
                        
    nome dati[2];
                        
    cognome dati[3];
                        
    checkprenotazioni true;
                    }else {
                        
    checkprenotazioni=  false;

                    }
                    if(
    checkprenotazioni){
                    
    passeggero passeggero = new passeggero(nomecognome);
                    
    Prenotazione prenotazione = new Prenotazione(passeggerofilaposto);
                    
    prenot_nuove.add(prenotazione);
                    
    prenotazioni prenot_nuove;
                    }
                    
                }catch (
    IOException ioe) {
                return 
    false;
            }
            
    in.close();
        }
    }


  6. #6
    (Per non dire una parolaccia)...Mamma mia!! VVoVe: a dir poco perfetto! Grazie provo a farlo fungere e poi vi dico.

  7. #7
    Allora, perfetto c'è ancora un problema solo...

    La classe deve ritornare true se ha letto correttamente tutto il file...bel problema vero? con il while(true e gli if) non so come integrare la cosa...qualche idea?

    ho provato a mettere dove leggo la linea:
    Codice PHP:
     String line1 in.readLine();
                    if (
    line1 == null)
                        return 
    true
    ma non cambia niente a livello di test, dove posso ritornare true?

  8. #8
    nel while aposto del true potresti usare

    while(in.ready())
    che ritorna false quando non c'è piu niente da leggere sul file

  9. #9
    Ho fatto che sostituire come hai detto tu (OTTIMA SCELTA!!!) e in più per restituire false quando non ho 4 argomenti ho messo return false nell'else dove controllo dati.length.

    Codice PHP:
    public boolean caricaPrenotazioni(String filethrows IOException {
            
    LinkedList<Prenotazioneprenot_nuove = new LinkedList<Prenotazione>();
            
    BufferedReader in;
            
    String posto null;
            
    String nome null;
            
    String cognome null;
            
    int fila 0;
            
    boolean checkprenotazioni;
            try {
                
    in = new BufferedReader(new FileReader(file));
            } catch (
    FileNotFoundException fnfe) {
                return 
    false;
            }
            while (
    in.ready()) {
                
    String line1 in.readLine();
                
    String[] dati line1.split(";");
                if (
    dati.length == 4) {
                    
    fila Integer.parseInt(dati[0]);
                    
    posto dati[1];
                    
    nome dati[2];
                    
    cognome dati[3];
                    
    checkprenotazioni true;
                } else {
                    return 
    false;
                }
                if (
    checkprenotazioni) {
                    
    Passeggero passeggero = new Passeggero(nomecognome);
                    
    Prenotazione prenotazione = new Prenotazione(passeggerofila,
                            
    posto);
                    
    prenot_nuove.add(prenotazione);
                    
    prenotazioni prenot_nuove;
                }
            }
            
    in.close();
            return 
    true;
        } 

    Il più è fatto infatti ho solo un failure che riguarda la verifica di un posto prenotato.
    Analizzerò meglio il tutto.

    Ti ringrazio molto Romeo25, forse potrei aver bisogno ancora di te per una piccola cosa se non dovessi trovare questo failure.

  10. #10
    HA FUNZIONATO EVVIVA!!!

    Ho corretto la classe verificaPosto così ('fila' è una matriciona di stringhe dove [a][b][c]
    corrispondono a):

    a=fila dell'aereo (1,2,...)
    b=colonna (1,2,...)
    fila[a][b][c= 0] il nome del posto ("A","B",...)
    fila[a][b][c=1] il fatto che sia un finestrino o un posto in corridoio ("F","C")
    Ecco il codice della classe:
    Codice PHP:
    public boolean verificaPosto(int filaString posto)
                
    throws PostoInesistente {
            if (
    fila modello.numFile)
                throw new 
    PostoInesistente();
            else {
                
    boolean trovato false;
                for (
    int i 1<= modello.numFilei++)
                    for (
    int j 0modello.postij++)
                        if (
    == fila)
                            if (
    modello.fila[i][j][0].equals(posto))
                                
    trovato true;
                if (!
    trovato)
                    throw new 
    PostoInesistente();
                if (
    prenotazioni != null) {
                    for (
    it prenotazioni.iterator(); it.hasNext();) {
                        
    Prenotazione prenotazione = (Prenotazioneit.next();
                        if ((
    prenotazione.fila == fila)
                                && 
    prenotazione.posto().equals(posto)) {
                            return 
    false;
                        }
                    }
                }

                return 
    true;
            }
        } 
    Grazie Romeo25.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.