NaNNy86
08-03-2006, 00:08
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:
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.";
}
}
Prima domanda, devo implementare la Serializeble anche se il file è in lettura?
Main.java:
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;
}
}
Infine un esempio di txt:
A29 Bologna Rimini 50
A01 Bologna Milano 160
A34 Milano Torino 140
Quando vado a lanciare il mio Main, immettendo da riga di comanda il nome del file, mi lanca una ClassCastException, ma io non riesco a capire dove sia il problema....
Grazie in anticipo delle risposte,
NaNNy :)
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:
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.";
}
}
Prima domanda, devo implementare la Serializeble anche se il file è in lettura?
Main.java:
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;
}
}
Infine un esempio di txt:
A29 Bologna Rimini 50
A01 Bologna Milano 160
A34 Milano Torino 140
Quando vado a lanciare il mio Main, immettendo da riga di comanda il nome del file, mi lanca una ClassCastException, ma io non riesco a capire dove sia il problema....
Grazie in anticipo delle risposte,
NaNNy :)