У меня есть строка, в которой хранится номер. Теперь я хочу проанализировать эту строку и получить как float.У меня есть строчка, хранящаяся в виде строки. Исключение
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
try {
System.out.println(Integer.parseInt(" 2 "));
} catch(NumberFormatException e) {
System.out.println("Exception caught");
}
System.out.println(Float.parseFloat(" 2.4 "));
}
}
Теперь в приведенном выше коде, если вы запустите его, он будет успешным. Мой вопрос: почему конечные пробелы в случае integer выбрасывают NumberFormatException
, а синтаксический анализ float не бросает один?
PS: То же самое происходит при использовании booolean и double parsing.
PPS: Почему существует несогласованность в java? И я уже проверить исходный код
почему бы вам не взглянуть на исходный код и узнать? Или посмотрите на @jens answer ;-) –
@ScaryWombat Не нужно будет получать исходный код Java и читать его, чтобы знать, что делает этот метод; эта информация должна быть в JavaDoc метода. В этом случае JavaDoc из 'Float.parseFloat (String)' не говорит этого, но он говорит _... как выполняется методом valueOf класса Float ..._ и JavaDoc 'Float.valueOf (String) 'does say _Leading и завершающие пробельные символы в s игнорируются_. – SantiBailors
@SantiBailors Спасибо - Отличный комментарий –