Integer.parseInt()
deve di prendere una stringa che è un numero intero (cioè senza punti decimali, anche se il numero è equivalente ad un numero intero. L'eccezione che sei arrivare lì sta essenzialmente dicendo "mi hai detto che questo numero è un numero intero, ma questa stringa non è in un formato valido per un intero!"
Se il numero contiene un componente decimale, quindi è necessario utilizzare Double.parseDouble()
, che restituirà una doppia primitiva. Tuttavia, poiché non ti interessa il componente decimale yo u può tranquillamente cadere semplicemente gettando il doppio per un int:
int num = (int)Double.parseDouble(str);
nota, tuttavia, che questo sarà solo rilasciare il componente decimale, non arrotondare il numero fino a tutti. Quindi lanciare 1.2, 1.8 o 1.999999 su un intero ti darebbe tutto 1. Se vuoi arrotondare il numero che viene restituito, usa Math.round() invece di lanciare semplicemente un numero intero.
Perché? I dati formattati come 30.0 o 30.00 chiaramente * non sono * un numero intero, è un numero reale. – EJP