2012-06-24 1 views
4

Я бы ожидал, что следующий код будет генерировать ParseException, но это «2» может кто-нибудь объяснить это или это ошибка в реализации Java? Я запускаю его на самых последних версиях Oracle (1.7.0_05) и osx.NumberFormat.parse возвращает неожиданный результат

try { 
     NumberFormat format = NumberFormat.getInstance(Locale.US); 
     Number number = format.parse("2 3"); 
     System.out.println(number); 
    } catch (ParseException e) { 
     System.out.println("2 3 is not a valid number!"); 
    } 

ответ

2

Это потому, что NumberFormat.parse(String) не может использовать весь текст для разбора. См. here.

1

Это ожидаемый результат.

В соответствии с documentation, NumberFormat.parse не обязательно использует всю строку.

Правило № 1 программирования Java: всегда читайте документацию!