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...
X terrorizza gli utenti con una mano gig...
Firmware UEFI, embargo saltato per error...
Android 18 limiterà le modifiche alla ru...
Silent Hill 1 Remake, nuove indiscrezion...
Keystone distrugge 18.835 hardware walle...
GTA VI potrebbe richiedere più GB...
Nokia 6300 rinasce grazie all'IA: arriva...
iPhone 18e: le prime indiscrezioni antic...
Motorola Edge 70 Neo in arrivo, un leak ...
Apple rilascia iOS 27.2 e iPadOS 27.2: n...
Ondata di licenziamenti in casa PlayStat...
macOS 27.2 Golden Gate è disponib...
Fujifilm vuole quintuplicare la produzio...
ChatGPT ora legge email e calendario di ...
Canon, un brevetto descrive un 70-200mm ...
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:19.


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