ParseInt падает на более длинные номера
Через несколько недель я наконец-то узнал, как анализировать свои номера через мое приложение. Но теперь приложение вылетает, когда ему присваивается номер в следующем формате: 92839283982938
или же 22.483.84.3883
,
Я просто не знаю, как заставить его принимать эти числовые форматы. Проблема связана со сканером штрих-кода, поэтому мне действительно нужно принять эти числовые форматы.
Код, который я использовал для анализа:
JSONObject c = user.getJSONObject(Integer.parseInt(xyz)-1);
2 ответа
Для более длинного номера вы должны использовать Long.parseLong()
вместо Integer.parseInt()
,
Следующий случай 22.483.84.3883
не числовой Ты получишь NumberFormatException
отсюда.
Ты можешь использовать
try{
long val=Long.parseLong("xxxx")
}catch(NumberFormatException e){
// exception
}
Если вы хотите рассмотреть 22.483.84.3883
или же 22-483-84-3883
как действительный случай, вам нужно заменить .
или же -
первый.
Например:
long val=Long.parseLong("22.483.84.3883".replaceAll("\\.", ""));
System.out.println(val);
Использование Long.parseLong
вместо. Целочисленный тип не может содержать такие большие числа (максимальное значение Integer равно 2^31-1, что намного меньше, чем 92839283982938). Кроме того, вы должны устранить точки.
Пытаться:
JSONObject c = user.getJSONObject(Long.parseLong(xyz.replace(".",""))-1);