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 03-12-2007, 00:05   #1
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
[Java]gestione input e StringTokenizer

Ciao!
Probabilmente è l'ora tarda ( :sisi: ), ma mi stanno venendo dubbi atroci sulla gestione dell'input..
Esempio pratico: sto facendo un esercizio dove chiede di creare un archivio di patenti di guida;secondo la consegna, il costruttore (di cui ho solo la firma) " inizializza l'archivio con i dati prelevati da un file il cui nome e' passato come parametro e dove le patenti di guida sono riportate una per riga con il seguente formato:
numero:nome:punteggio "

Io (sperando di aver capito bene) ho scritto così:
Codice:
public M(String file) throws IOException 
  {
  archivio= new Coppia[1];
  dim = 0;
  
  FileReader r = new FileReader (file);
  BufferedReader reader = new BufferedReader(r);
  while (reader.readLine() != null)
	{
	String line = reader.readLine();
   StringTokenizer tokenizer = new StringTokenizer(line);
	while (tokenizer.hasMoreTokens())
		{
		String num = tokenizer.nextToken(":");
		String nome = tokenizer.nextToken(":");
		int punt = Integer.parseInt(tokenizer.nextToken("\n"));
		aggiungi(num, nome, punt);
		}
	}
	reader.close();
	}
per compilare compila, ma mi viene il dubbio che non funzioni come voglio..cioè, dopo il primo tokenizer.nextToken(), lui alla seconda invocazione passa automaticamente al token successivo, no? o scritto così continua a prendermi su la stessa parola? e poi: dopo un primo giro di while mi passa automaticamente alla riga successiva del file, no?

Grazie mille in anticipo
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 00:12   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Perché non fai qualche stampa a video per vedere cosa viene messo dentro le variabili? Sempre che non hai un debugger che sarebbe molto meglio.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 19:02   #3
Dark Phoenix
Member
 
L'Avatar di Dark Phoenix
 
Iscritto dal: May 2007
Città: Roma
Messaggi: 93
non ne sono sicuro....

....ma prova un po' così!?

Codice:
public M(String file) throws IOException 
  {
  archivio= new Coppia[1];
  dim = 0;
  
  FileReader r = new FileReader (file);
  BufferedReader reader = new BufferedReader(r);
  while (reader.readLine() != null)
	{
	String line = reader.readLine();
   StringTokenizer tokenizer = new StringTokenizer(line, ":");
	while (tokenizer.hasMoreTokens())
		{
		String num = tokenizer.nextToken();
		String nome = tokenizer.nextToken();
		int punt = Integer.parseInt(tokenizer.nextToken());
		aggiungi(num, nome, punt);
		}
	}
	reader.close();
	}
__________________
Più ti avvicini alla luce, più la tua ombra diventa grande (Kingdom Hearts - Walt Disney e Squaresoft, ma la mano è della Squaresoft)
Dark Phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 20:58   #4
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
Eccomi..ho appena provato a creare una classe di prova, ma mi dà questo errore, anche dopo aver modificato la classe come consigliato da Dark Phoenix..


C:\...>java ProvaPatente patenti.txt
Exception in thread "main" java.lang.NumberFormatException: For input string: "34CD56"
at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:456)
at java.lang.Integer.parseInt(Integer.java:497)
at M.aggiungi(M.java:37)
at M.<init>(M.java:26)
at ProvaPatente.main(ProvaPatente.java:8)

non capisco dove sto sbagliando..

Questo è il contenuto di patenti.txt:

12AB34:Antonio Verdi:20
34CD56:Berto Rossi:20
56EF78:Carlo Bianchi:20
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 22:43   #5
vegeta83ssj
Senior Member
 
L'Avatar di vegeta83ssj
 
Iscritto dal: Feb 2002
Città: Modena
Messaggi: 594
prova a postare il metodo "aggiungi", secondo me il problema è lì!
Il compilatore ti sta dicendo che non riesce a convertire "34CD56" in Integer, evidentemente nel metodo aggiungi tu fai un'operazione del genere sul primo parametro che però è una stringa e non un intero (o stringa che rappresenti un intero).

Ciauz
vegeta83ssj è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2007, 23:01   #6
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
Quote:
Originariamente inviato da vegeta83ssj Guarda i messaggi
prova a postare il metodo "aggiungi", secondo me il problema è lì!
Il compilatore ti sta dicendo che non riesce a convertire "34CD56" in Integer, evidentemente nel metodo aggiungi tu fai un'operazione del genere sul primo parametro che però è una stringa e non un intero (o stringa che rappresenti un intero).

Ciauz
mamma mia, hai ragione..ma cavolo, si può chiamare "numero" una variabile che non è un numero?! io già sono torda di mio, se poi ci si mettono di impegno per farmi sbagliare

comunque ora ho modificato, ma ancora non va..
Adesso mi dice:

C:\...>java
ProvaPatente patenti.txt
Exception in thread "main" java.lang.NullPointerException
at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
at java.util.StringTokenizer.<init>(StringTokenizer.java:204)
at M.<init>(M.java:20)
at ProvaPatente.main(ProvaPatente.java:8)
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2007, 17:25   #7
Dark Phoenix
Member
 
L'Avatar di Dark Phoenix
 
Iscritto dal: May 2007
Città: Roma
Messaggi: 93
Beh ora è facile....

Il buon vecchio nullpointer exception a quella liga lì....

Quote:
Originariamente inviato da blue_blue Guarda i messaggi
Exception in thread "main" java.lang.NullPointerException
at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
at java.util.StringTokenizer.<init>(StringTokenizer.java:204)
at M.<init>(M.java:20)
at ProvaPatente.main(ProvaPatente.java:8)
Evidentemente c'è qualche valore null vagante... Se posti il codice intorno a quelle righe possiamo vedere meglio...
__________________
Più ti avvicini alla luce, più la tua ombra diventa grande (Kingdom Hearts - Walt Disney e Squaresoft, ma la mano è della Squaresoft)
Dark Phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2007, 21:47   #8
blue_blue
Senior Member
 
L'Avatar di blue_blue
 
Iscritto dal: Aug 2006
Messaggi: 1192
Quote:
Originariamente inviato da Dark Phoenix Guarda i messaggi
Beh ora è facile....

Il buon vecchio nullpointer exception a quella liga lì....



Evidentemente c'è qualche valore null vagante... Se posti il codice intorno a quelle righe possiamo vedere meglio...
trovato, grazie comunque!

Tornando in tema..per la gestione dell'input quali sono le modalità più usate? Io conosco Scanner (e in quel caso se devo dargli in lettura un file, devo inserirlo con il <, giusto? ) e FileReader + BufferedReader ( e qua invece passo il nome del file come parametro del main, no?)..ho detto cavolate?
E invece per creare un file di output cosa si usa di solito??
__________________
blue_blue: nickname proprio di persona, femminile, singolare
"Wait, before you close the curtain/There’s still another game to play/And life is beautiful that way"(Beautiful that way, Noa & Nicola Piovani)
Fiore, sei un mito
blue_blue è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2007, 17:53   #9
ABCcletta
Senior Member
 
L'Avatar di ABCcletta
 
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
Io preferisco usare gli stream. Utilizzando FileInputStream ho sempre ottenuto il risultato sperato.

Devi incapsulare gli stream in modo da ottenere una lettura bufferizzata, ovvero:
Codice:
File f = new File(pathdelfile);
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
Puoi leggere le linee del file una ad una utilizzando una readLine:
Codice:
String input = br.readLine();
Ah, devi trattare l'IOException...
ABCcletta è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2007, 23:36   #10
Dark Phoenix
Member
 
L'Avatar di Dark Phoenix
 
Iscritto dal: May 2007
Città: Roma
Messaggi: 93
Guarda se devi trattare solo file di "caratteri" puoi utilizzare FileReader.

P.S.
@ABCcletta: L' "imbussulamento" in InputStreamReader volendo lo puoi togliere
__________________
Più ti avvicini alla luce, più la tua ombra diventa grande (Kingdom Hearts - Walt Disney e Squaresoft, ma la mano è della Squaresoft)
Dark Phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2007, 02:05   #11
ABCcletta
Senior Member
 
L'Avatar di ABCcletta
 
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
Quote:
Originariamente inviato da Dark Phoenix Guarda i messaggi
Guarda se devi trattare solo file di "caratteri" puoi utilizzare FileReader.

P.S.
@ABCcletta: L' "imbussulamento" in InputStreamReader volendo lo puoi togliere
Non mi pare, se crei un inputstream dopo ci vuole un reader e poi ci applichi la lettura bufferizzata. Comunque farò una prova...


EDIT: Infatti non va. Forse volevi intendere qualche altra cosa?

Ultima modifica di ABCcletta : 10-12-2007 alle 02:08.
ABCcletta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:10   #12
Dark Phoenix
Member
 
L'Avatar di Dark Phoenix
 
Iscritto dal: May 2007
Città: Roma
Messaggi: 93
Si mi sono espresso malissimo....

in pratica volevo dire che così è più snello...

Codice:
File f = new File(pathdelfile);
BufferedReader br = new BufferedReader(new FileReader(f));
__________________
Più ti avvicini alla luce, più la tua ombra diventa grande (Kingdom Hearts - Walt Disney e Squaresoft, ma la mano è della Squaresoft)
Dark Phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 17:37   #13
ABCcletta
Senior Member
 
L'Avatar di ABCcletta
 
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
Quote:
Originariamente inviato da Dark Phoenix Guarda i messaggi
Si mi sono espresso malissimo....

in pratica volevo dire che così è più snello...

Codice:
File f = new File(pathdelfile);
BufferedReader br = new BufferedReader(new FileReader(f));
Ah si con FileReader si
Ma preferisco avere a che fare con gli stream
ABCcletta è 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, ...
Airbus realizzerà altri 229 satel...
Arianespace lancerà altri satelli...
Eutelsat ha annunciato di aver affidato ...
PLD Space ha annunciato il nuovo razzo s...
CMF Clip Pro, tanta autonomia e design u...
Tre leggende del rally sbarcano in Asset...
iPhone 18 Pro Max, il chip A20 Pro mostr...
Samsung porterà il Privacy Displa...
WINDTRE BUSINESS trasforma la rete mobil...
Anthropic ammette un quarto caso di acce...
Mazda CX-6e, il primo test drive: quando...
La serie HONOR Magic 9 arriva a fine set...
Anker MagGo Power Bank 2 Pro arriva in I...
iRobot rilancia con Roomba Duo, il proto...
#linux su IRC è tornato dopo anni di sil...
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: 05:53.


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