Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
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: 2793
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


Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Il rover lunare Yutu-2 della missione ci...
A causa di una tempesta tropicale, la mi...
Aggiornamenti importanti per le offerte ...
Tutte le offerte sui dispositivi Amazon:...
2 bestseller Amazon di cui non si parla ...
4 friggitrici ad aria a prezzo stracciat...
Sennheiser Momentum 5, i nuovi auricolar...
Serie A e Serie B al via: guida ai nuovi...
CMF Buds Neo, il sub-brand di Nothing pr...
GTA 6 è già un successo: i preordini sta...
Una Visa scaduta può ancora pagar...
I migliori robot aspirapolvere in offert...
The Duskbloods non cambia la direzione d...
Un weekend di ribassi eccezionali su Ama...
Cosa succede se l'IA diventa una persona...
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: 23:35.


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