2016-02-20 3 views
0

У меня проблема с синтаксическим разбором String. Строка, о которой идет речь, представляет собой число, которому предшествуют пробелы. Например: «35».Java: проблема с преобразованием строки в длинную

NetBeans бросил эту ошибку:

Exception in thread "main" java.lang.NumberFormatException: For input string: " 35" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Long.parseLong(Long.java:578) 
at java.lang.Long.parseLong(Long.java:631) 
at Sis1.main(Sis1.java:75) 
/Users/michaeladrian39/Library/Caches/NetBeans/8.1/executor-snippets/run.xml:53: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

Я хочу, чтобы разобрать строку "35" без пробелов до тех пор. Как исправить эту ошибку?

ответ

3

Вы хотите разобрать строку «35», но попытайтесь разобрать строку «35», которая имеет дополнительное пространство. Удалите его с помощью вызова (например) trim():

Integer.parseInt(str.trim()) 
+1

Или 'Long.parseLong' даже ... –

+0

str.trim() действительно исправляет проблему. большое спасибо! – michaeladrian39

0

Проблема заключается в пространстве до 35. Удалите пробелы, и все должно работать.

+0

Я не могу удалить пробел ... – michaeladrian39

+1

Если ваша строка является динамической, тогда вызовите string.trim(), а затем passit в Long.parseLong() - как syggested от AlexR. –

0
String as = "6767"; 
     long vb = Long.valueOf(as).longValue(); 
     System.out.println(vb); 

надеюсь, что мой код помогает. Счастливое кодирование

0

Документация Long.parseLong (String s, int radix) гласит, что строка 's' не должна содержать символ не-digi. Вот выдержка из javadoc.

An exception of type NumberFormatException is thrown if any of the following situations occurs:

  • The first argument is null or is a string of length zero.

  • The radix is either smaller than Character.MIN_RADIX or larger than Character.MAX_RADIX.

  • Any character of the string is not a digit of the specified radix, except that the first character may be a minus sign '-' ('\u002d') or plus sign '+' ('\u002B') provided that the string is longer than
    length 1.

  • The value represented by the string is not a value of type long.

Примеры:

parseLong("0", 10) returns 0L 
parseLong("473", 10) returns 473L 
parseLong("+42", 10) returns 42L 
parseLong("-0", 10) returns 0L 
parseLong("-FF", 16) returns -255L 
parseLong("1100110", 2) returns 102L 
parseLong("99", 8) throws a NumberFormatException 
parseLong("Hazelnut", 10) throws a NumberFormatException 
parseLong("Hazelnut", 36) returns 1356099454469L 

String.trim() должен работать для вас (как уже упоминалось AlexR).

Смежные вопросы