|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
|
[Java] Lettura da file e ClassCastException
Salve a tutti, ritorno con i miei solito problemi sul java ( il 21 ho l'esame e devo passarlo a tutti i costi )!
Allora vi posto i miei due file: il primo è la classe Tratta e il secondo è la classe Main composto da vari metodi tra cui quello di lettura ( lettura di un array di Tratta, appunto). Tratta.java: Codice:
public class Tratta implements java.io.Serializable { protected String sigla; protected String citta1; protected String citta2; protected int distanza; public String getSigla(){ return sigla; } public String getCitta1(){ return citta1; } public String getCitta2(){ return citta2; } public int getDistanza(){ return distanza; } public Tratta(String siglaL, String citta1L, String citta2L, int distanzaL){ sigla = siglaL; citta1 = citta1L; citta2 = citta2L; distanza = distanzaL; } public String altraCitta(String a){ if (citta1.compareToIgnoreCase(a) == 0){ return citta2; } if (citta2.compareToIgnoreCase(a) == 0){ return citta1; } else return null; } public String toString(){ return "La tratta che parte da " +getCitta1() + " e arriva a " + getCitta2() + ", dista " +getDistanza() + "km."; } } Main.java: Codice:
import java.util.*; import java.io.*; public class Main{ public static void main(String arg[]) throws FileNotFoundException, IOException{ elencoCitta(leggiRete(arg[0])); } public static Vector leggiRete(String nomefile) throws FileNotFoundException, IOException{ //BufferedReader input = null; //try{ BufferedReader input = new BufferedReader(new FileReader(nomefile)); Vector v = new Vector(); String buffer; while ((buffer = input.readLine())!=null){ StringTokenizer stk = new StringTokenizer(buffer); String sigla = stk.nextToken().trim(); String citta1 = stk.nextToken().trim(); String citta2 = stk.nextToken().trim(); int distanza = Integer.parseInt(stk.nextToken().trim()); v.add( new Tratta(sigla, citta1, citta2, distanza)); } input.close(); return v; } public static Tratta[] elencoCitta(Vector v){ Tratta[] elenco = new Tratta[v.size()]; elenco = (Tratta[])v.toArray(); for(int i=0; i<elenco.length; i++){ System.out.println(elenco[i]); } return elenco; } } Codice:
A29 Bologna Rimini 50 A01 Bologna Milano 160 A34 Milano Torino 140 Grazie in anticipo delle risposte, NaNNy ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
io l'ho risolto usando i generics..ma forse funziona anche senza usarli
![]() Codice:
import java.util.*; import java.io.*; public class Main{ public static void main(String arg[]) throws FileNotFoundException, IOException{ elencoCitta(leggiRete(arg[0])); } public static Vector leggiRete(String nomefile) throws FileNotFoundException, IOException{ //BufferedReader input = null; //try{ BufferedReader input = new BufferedReader(new FileReader(nomefile)); Vector<Tratta> v = new Vector<Tratta>(); String buffer; while ((buffer = input.readLine())!=null){ StringTokenizer stk = new StringTokenizer(buffer); String sigla = stk.nextToken().trim(); String citta1 = stk.nextToken().trim(); String citta2 = stk.nextToken().trim(); int distanza = Integer.parseInt(stk.nextToken().trim()); v.add( new Tratta(sigla, citta1, citta2, distanza)); } input.close(); return v; } public static Tratta[] elencoCitta(Vector <Tratta> v){ Tratta[] elenco = new Tratta[v.size()]; elenco = v.toArray(elenco); for(int i=0; i<elenco.length; i++){ System.out.println(elenco[i]); } return elenco; } } La tratta che parte da Bologna e arriva a Milano, dista 160km. La tratta che parte da Milano e arriva a Torino, dista 140km.
__________________
![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
|
Grazie comunque del tuo aiuto, ma non avendo fatto a lezione i generics ( non sò minimamente cosa siano ) dovrei trovare una soluzione senza di essi....
Altre idee? |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
|
uppete
![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2363
|
Quote:
Codice:
public static Tratta[] elencoCitta(Vector v){ Tratta elenco[] = new Tratta[v.size()]; elenco = (Tratta[]) v.toArray(elenco); for(int i=0; i<elenco.length; i++){ System.out.println(elenco[i]); } return elenco; }
__________________
|
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
|
FUNZIONA!! Grazie mille !!!!
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]() scusa se nn sono stato kiaro, ma io preferisco sempre usare i generics, anke quando non strettamente necessario xkè ritengo ke migliorino la leggibilità del codice.... non sapevo ke non aveste fatto i generics all'univ... ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2363
|
Quote:
__________________
|
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
|
li abbiamo fatti prorpio oggi
![]() non c'ho capito molto, ma ora mi devo dedicare alla parte grafica... ![]() |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2363
|
Quote:
All'Università di Salerno non li hanno nemmeno nominati però ![]()
__________________
|
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
|
Sì, li hanno introdotti con la 1.5.0
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:20.