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);
Другие вопросы по тегам