|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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!!! |
|
|
|
|
|
#2 |
|
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/ |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2006
Città: Roma
Messaggi: 2187
|
continua a non andare
__________________
SCAMBI EFFETTUATI CON: diventano troppi...nn entrano piu!!! |
|
|
|
|
|
#4 |
|
Member
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 |
|
|
|
|
|
#5 |
|
Senior Member
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 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 10:21. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 334
|
Quote:
"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);
}
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:05.




















