Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-12-2007, 01: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, 01:12   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
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, 20: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, 21: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, 23:43   #5
vegeta83ssj
Senior Member
 
L'Avatar di vegeta83ssj
 
Iscritto dal: Feb 2002
Città: Modena
Messaggi: 592
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 04-12-2007, 00: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, 18: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, 22: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, 18: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 10-12-2007, 00: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, 03: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 03:08.
ABCcletta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2007, 18: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, 18: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 vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
Upgrade PC a prezzo ridotto: le migliori...
Sono i 6 smartphone migliori su Amazon: ...
Google Pixel 9a a 361€, mai così ...
Super sconti sugli spazzolini Oral-B, an...
Aspira a 6000Pa, lava bene, costa 139€: ...
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: 00:47.


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