Salve a tutti.
Avrai da fare un programma che gestisce un magazzino di Prodotti organizzati per Codice a barre, descrizione e prezzo.
Questo programma deve mettere a disposizione alcune funzionalità quali la carica di un magazzino da un file testuale organizzato come un CSV.
Questa è la parte di codice del carica file:
E questo è il file:codice:public Magazzino leggiChar(String s){ FileReader file; BufferedReader buff; Magazzino mag = new Magazzino(); String temp =""; //ArrayList<String> vect = new ArrayList<String>(); try{ file = new FileReader(s); buff = new BufferedReader(file); String[] vect; while(temp!=null){ Prodotto p = new Prodotto(); Float f; //Questi due wrapper mi servono per forza perché la split() restituisce un vettore di stringhe, quindi mi servono per fare il "cast". Integer i; temp = buff.readLine(); if(temp!=null){ vect=temp.split(";"); p.setCodBarre(vect[0]); p.setDescrizione(vect[1]); f = Float.valueOf(vect[2]); p.setPrezzo(f); i = Integer.valueOf(vect[3]); mag.inserimento(p, i); } } if(buff != null) buff.close(); }catch(IOException e){} return mag; }
Quindi è organizzato del tipo CodBarre;descrizione;prezzo;scorte;codice:000;Latte;10.0;2; 003;Caffè;2.2;10; 001;Cioccolato;5;20;
Funziona tutto, tranne una cosa: la carica magazzino da un file già esistente sul computer. Praticamente mi rilancia l'eccezione ArrayIndexOutOfBoundException:1 .
Ecco cosa mi esce dalla console di Eclipse:
Ho pensato che il problema possa essere quel String[] vect; che mi alloca un vettore di una sola cella. Ho provato quindi a fare un ciclo while per contare quanti record ho, ma sarebbe terribilmente inefficiente. Qualcuno ha qualche altra soluzione?codice:1. Carica un magazzino da file di Char 2. Carica un magazzino da un file di byte 3. Crea un nuovo magazzino 0. Esci dal programma 1 Inserisci il percorso del file da caricare E:/prove/magazzino.txt Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at SerializzatoreMagazzino.leggiChar(SerializzatoreMagazzino.java:85) at UIMagazzino.main(UIMagazzino.java:29)
Grazie a tutti.

Rispondi quotando