Metodo split

di il
4 risposte

Metodo split

Raga ma se io ho un file.txt così:
Nome,Cognome,Numero,Marca,Nome.
Giovanni,Longobardi ,3315389897,sony,m2.
Anna,Longobardi,3394782769,nokia,630.
e ho questo codice
br = new BufferedReader(fileReader);
			String s;
			while(( s = br.readLine())!=null)
			{
				String[] array = s.split(",");
				persona.add(new Persona(array[0],array[1],new Telefono(array[2],array[3],array[4])));
che accetta tutte stringhe nel costruttore.. perchè mi dà l'errore java.lang.ArrayIndexOutOfBoundsException: 2 ???

4 Risposte

  • Re: Metodo split

    Perche', da qualche parte, nel file, c'e' una riga con MENO di 5 stringhe, ma con solo 2
    Ultima riga?

    Consiglio: le eccezzioni/errori esistono per un motivo!
    Se vuoi imparare a programmare, devi anche imparare a capire perche' le eccezzioni si verificano
  • Re: Metodo split

    @ercucchiaio
    String[] array = s.split(",");
    
    if (array.length == NNN) {      // NNN il numero che ti aspetti!
        //.....elabora......
    } else {
        // a) ignori la riga (eventualmente log errore o ometti proprio il else)
        //   oppure
        // b) lanci una eccezione che indica che il file è "malformato"
    }
    Questi sono aspetti di logica a cui bisogna sempre pensare.
  • Re: Metodo split

    Grazie mille,gentilissimi come sempre. Comunqur io avevo intenzione di gestire l'eccezione..ma non ho capito il perché mi legga due stringhe quando io nel file vedo bene che ce ne sono bene 5 per riga.. Come ho fatto vedere nel primo post..
  • Re: Metodo split

    ercucchiaio ha scritto:


    Comunqur io avevo intenzione di gestire l'eccezione..
    Se pensavi di fare un catch di ArrayIndexOutOfBoundsException .... no. Se ti salta fuori, il significato potrebbe essere duale: che il file è malformato oppure che il tuo codice è bacato (es. hai messo per sbaglio array[5] invece che solo array[4] o altri errori del genere).

    Questa dualità non ci dovrebbe essere! Devi sempre testare quello che ti aspetti. Se poi sbucano fuori es. NullPointerException o ArrayIndexOutOfBoundsException, allora è il sintomo di un tuo baco.
Devi accedere o registrarti per scrivere nel forum
4 risposte