Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-03-2006, 23:08   #1
NaNNy86
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.";
	}
}
Prima domanda, devo implementare la Serializeble anche se il file è in lettura?

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;
    }
}
Infine un esempio di txt:
Codice:
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
NaNNy86 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2006, 01:06   #2
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
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 Rimini, dista 50km.
La tratta che parte da Bologna e arriva a Milano, dista 160km.
La tratta che parte da Milano e arriva a Torino, dista 140km.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2006, 09:44   #3
NaNNy86
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?
NaNNy86 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2006, 11:34   #4
NaNNy86
Member
 
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
uppete
NaNNy86 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2006, 14:44   #5
rdefalco
Senior Member
 
L'Avatar di rdefalco
 
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
Quote:
Originariamente inviato da NaNNy86
uppete
eccolo qui:
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;
    }
il metodo toArray può avere come parametro opzionale un array da prendere ad esempio per il tipo di dato da usare. Sembra funzionare, altrimenti mi mandi un MP o uppi il thread.
__________________
Raffo™ (io, non la birra) | informatica»unisa.it | my terzigno | για να είναι ή για να μην είναι
rdefalco è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2006, 18:28   #6
NaNNy86
Member
 
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
FUNZIONA!! Grazie mille !!!!
NaNNy86 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2006, 00:57   #7
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
Quote:
Originariamente inviato da rdefalco
eccolo qui:
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;
    }
il metodo toArray può avere come parametro opzionale un array da prendere ad esempio per il tipo di dato da usare. Sembra funzionare, altrimenti mi mandi un MP o uppi il thread.
infatti intendevo quello come soluzione senza generics, bastava togliere quello ke avevo scritto tra <>
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...
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2006, 12:58   #8
rdefalco
Senior Member
 
L'Avatar di rdefalco
 
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
Quote:
Originariamente inviato da ^TiGeRShArK^
infatti intendevo quello come soluzione senza generics, bastava togliere quello ke avevo scritto tra <>
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...
Neanche io ho idea di cosa siano i generics... spiegazione?
__________________
Raffo™ (io, non la birra) | informatica»unisa.it | my terzigno | για να είναι ή για να μην είναι
rdefalco è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2006, 13:36   #9
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
generics
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2006, 21:12   #10
NaNNy86
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...
NaNNy86 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2006, 22:17   #11
rdefalco
Senior Member
 
L'Avatar di rdefalco
 
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
Quote:
generics
Beh sembrano interessanti, perlomeno riguardo la parte del compilare e rilevare errori prima della fase di runtime.

All'Università di Salerno non li hanno nemmeno nominati però sono una feature della 1.5.0?
__________________
Raffo™ (io, non la birra) | informatica»unisa.it | my terzigno | για να είναι ή για να μην είναι
rdefalco è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2006, 10:45   #12
NaNNy86
Member
 
Iscritto dal: Nov 2002
Città: Arezzo
Messaggi: 208
Sì, li hanno introdotti con la 1.5.0
NaNNy86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v