Преобразовать буквенно-цифровую строку в числа - NumberFormatException - PullRequest
3 голосов
/ 14 марта 2012

Мне нужно получить число 23 из строки "a23". При запуске нижеуказанной программы появляется следующая ошибка.

public class GetIntFromString {

    public static void main(String[] args) {

        String str = "a23";

        int i = Integer.parseInt(str);

        System.out.println("Integer value= "+i);

        System.out.println("value= "+str);

    }
}

Вот трассировка стека

Exception in thread "main" java.lang.NumberFormatException: For Input String: "a23"

at java.lang.NumberFormatException.forInputString<NumberFormatException.java.48>
at java.lang.Integer.ParseInt<Integer.java.449>
at java.lang.Integer.ParseInt<Integer.java.499>
at GetIntFromString.main<GetIntFromString.java.9>

Ответы [ 5 ]

4 голосов
/ 25 марта 2012

Просто удалите все нецифровые символы;)

System.out.println("Integer value= "+str.replaceAll("[^0-9]","")); 
2 голосов
/ 14 марта 2012

Если ваша префиксная буква всегда будет состоять только из одного символа, попробуйте следующее

int i = Integer.parseInt(str.substring(1));

В противном случае вам необходимо найти числовую часть перед вызовом parseInt

2 голосов
/ 14 марта 2012

Методы parseXXX () не принимают строки, которые не соответствуют запрашиваемому типу - в данном случае целое число.Вам нужно будет найти технику, чтобы найти фактическую числовую часть вручную (или, возможно, с помощью регулярных выражений).

1 голос
/ 25 марта 2012

Вы должны вызвать replaceAll на str, чтобы удалить все нечисловые символы.Parseint принимает только чистые числовые строки.

0 голосов
/ 14 марта 2012

метод разбора принимает только числа в строковом формате.В противном случае выдается NumberFormatException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...