Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-11-2011, 21:08   #1
@mattste
Senior Member
 
L'Avatar di @mattste
 
Iscritto dal: Aug 2006
Città: Roma
Messaggi: 2187
[JAVA] Errore incomprensibile

Ciao a tutti , sono ancora alle prime armi con java e sto riscontrando uno strano problema che da oltre 1 ora nn riesco a risolvere per un programma molto corto è facile .
Devo calcolare la media in modo ricorsivo da un file contenente un intero per riga . Questo è il codice del metodo statico :



public static int mediaDaFile(BufferedReader r) throws IOException{
String linea=r.readLine();
if (linea==null)
return (Integer.parseInt(linea));
else
return ((Integer.parseInt(linea)+mediaDaFile(r))/2);
}



Questo è il main :

FileReader f = new FileReader("prova.txt");
BufferedReader br = new BufferedReader(f);
System.out.println(Numeri.mediaDaFile(br));


Nel file ho messo solo 4 interi per prova in un file nella stessa cartella prova.txt .
La compilazione và a buon fine ma in esecuzione mi dà sempre questo errore :


Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Numeri.mediaDaFile(Numeri.java:113)
at Numeri.mediaDaFile(Numeri.java:115)
at Numeri.mediaDaFile(Numeri.java:115)
at Numeri.main(Numeri.java:146)


Grazie e scusate per la domanda stupida ma non riesco a trovare l'errore e sto veramente impazzendo
__________________
SCAMBI EFFETTUATI CON: diventano troppi...nn entrano piu!!!
@mattste è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2011, 21:52   #2
sic2
Junior Member
 
Iscritto dal: Nov 2011
Messaggi: 13
ciao,


ti consiglio di scrivere:

if (linea == "")

inoltre prova con questo

String linea = r.readline().trim()

forse il tuo file non contiene solo numeri ma anche degli spazi che impediscono a java di convertire la string in integer.
__________________
http://sic-oding.blogspot.com/
sic2 è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2011, 22:04   #3
@mattste
Senior Member
 
L'Avatar di @mattste
 
Iscritto dal: Aug 2006
Città: Roma
Messaggi: 2187
continua a non andare
__________________
SCAMBI EFFETTUATI CON: diventano troppi...nn entrano piu!!!
@mattste è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2011, 00:28   #4
__ZERO_UNO__
Member
 
L'Avatar di __ZERO_UNO__
 
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
Se linea == null tenti di convertirla in intero? E quale numero intero sarebbe null?
Non usare BufferReader, è obsoleto. Meglio la classe Scanner.
__________________

AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB
Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX
Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200
__ZERO_UNO__ è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2011, 01:24   #5
@mattste
Senior Member
 
L'Avatar di @mattste
 
Iscritto dal: Aug 2006
Città: Roma
Messaggi: 2187
si effettivamente nn ha proprio senso vedendolo a distanza di tempo quell'
if (linea==null) . Resta il fatto che ora ho realizzato che cosi non funziona a me serve l'ultimo valore in modo tale che la divisione/2 mi dia il valore uguale all'ultimo intero ma attualmente nn saprei fare con un metodo ricorsivo . Ho provato con mark e reset ma ho realizzato che cmq nn risolverei il problema . qualcuno ha qualche idea su come farlo in modo ricorsivo!?(ovviamente immagino non valga leggere l'ultimo valore da un altro metodo e passarlo come parametro seppur funzionale ).
Non uso lo scanner poiche per ora i professori ci consigliano di utilizzare determinate classi, anche piu rognose ,ma che possono aiutare a capire essendo ancora alle prime armi (diciamo che di fatto ci vincolano ad utilizzarle)


EDIT :è sbagliato in ogni caso provo a trovare un altro modo per risolvere il problema . grazie cmq
__________________
SCAMBI EFFETTUATI CON: diventano troppi...nn entrano piu!!!

Ultima modifica di @mattste : 27-11-2011 alle 11:21.
@mattste è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2011, 11:25   #6
webking
Senior Member
 
Iscritto dal: Aug 2006
Messaggi: 334
Quote:
Originariamente inviato da @mattste Guarda i messaggi
Ciao a tutti , sono ancora alle prime armi con java e sto riscontrando uno strano problema che da oltre 1 ora nn riesco a risolvere per un programma molto corto è facile .
Devo calcolare la media in modo ricorsivo da un file contenente un intero per riga . Questo è il codice del metodo statico :



public static int mediaDaFile(BufferedReader r) throws IOException{
String linea=r.readLine();
if (linea==null)
return (Integer.parseInt(linea));
else
return ((Integer.parseInt(linea)+mediaDaFile(r))/2);
}



Questo è il main :

FileReader f = new FileReader("prova.txt");
BufferedReader br = new BufferedReader(f);
System.out.println(Numeri.mediaDaFile(br));


Nel file ho messo solo 4 interi per prova in un file nella stessa cartella prova.txt .
La compilazione và a buon fine ma in esecuzione mi dà sempre questo errore :


Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Numeri.mediaDaFile(Numeri.java:113)
at Numeri.mediaDaFile(Numeri.java:115)
at Numeri.mediaDaFile(Numeri.java:115)
at Numeri.main(Numeri.java:146)


Grazie e scusate per la domanda stupida ma non riesco a trovare l'errore e sto veramente impazzendo
Il problema è semplice, ottieni un NULL pointe exception a causa dell'IF. Un BufferedReader torna NULL solo in caso di arrivo di EOF, cioè quando lo stream di lettura viene chiuso. Quello che tu fai è
"assegno a line il valore di ritorno di readLine"
"se il valore è null, ritorno la rappresentazione in Intero di NULL"

E qui che non ci siamo: se linea è NULL, è finito lo stream di lettura e non puoi convertire NULL in un intero!

Se linea == NULL, allora hai raggiunto EOF, fai tornare 0!


Codice:
public static int mediaDaFile(BufferedReader r) throws IOException{

String linea=r.readLine();

if (linea==null)
      return 0;
else 
      return ((Integer.parseInt(linea)+mediaDaFile(r))/2);
}
Questo dovrebbe risolverti il problema: quando arriva alla fine dello stream, torna 0, in modo che al livello superiore dello stack di invocazione ci sia la media calcolata prima + 0 = media calcolata prima; e così via. Provalo e facci sapere (io non ho avuto tempo di mettermi con Eclipse ma sono piuttosto sicuro che vada benone!)
webking è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Cowboy Space Corp. presenta il suo razzo...
Per NetSuite il vantaggio nell'IA sta ne...
Scoperta la zona d'origine del segnale W...
La Stazione Spaziale Internazionale cont...
La Difesa statunitense ha pubblicato la ...
vivo X500 Pro e Pro Max ufficiali: tanta...
iOS 27.2: l'iPhone chiede ai numeri scon...
Final Cut Pro integra MotionVFX e Apple ...
iMac M6 da 1.829 euro, MacBook Pro 14 M6...
RayNeo GT a 313,65€ su Amazon: occhiali ...
NVIDIA e Meta: 3 miliardi di dollari e p...
PHP2Shell: sfruttate attivamente le due ...
Raffreddamento passivo senza elettricità...
La deforestazione in Amazzonia crolla a ...
La luce del sole a mezzanotte, ecco come...
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:19.


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