У меня есть ошибка исключения числового формата
Я получил эту ошибку "java.lang.NumberFormatException: недопустимый int: "3e+06"", и это препятствует запуску моего приложения. Я передаю числовое значение строки в int, и это произошло. Будет ли числовое значение слишком большим для целого числа? Может ли кто-нибудь сказать мне, что это значит и какие-либо решения для этого?
Bundle getAlarmInfo = getIntent().getExtras();
titleOfAlarm = getAlarmInfo.getString("Title");
totalTime = getAlarmInfo.getString("totalTime");
// Хорошо, поэтому я пытаюсь получить значение getAlarmInfo.getString("totalTime"); и передать его в общее время, которое является строкой
actualTimeFiniliazedInMilliSeconds = Integer.parseInt(totalTime);
// тогда я беру это значение и сохраняю его в actualTimeFiniliazedInMilliSeconds, который является целым числом.
titleTextView.setText(titleOfAlarm);
// Затем я передаю это значение CountDownTime, который принимает только целые и длинные значения.
countDown = new CountDownTime( actualTimeFiniliazedInMilliSeconds, timeInterval);
countDown.start();
3 ответа
Прежде всего, вы должны опубликовать некоторый код, но:
какое значение вы анализируете?
самый быстрый способ проверить, является ли значение слишком большим, - это разбор
Long
тип. Если это подходит, у вас есть ответ
// редактировать
Если тебе надо int
или же long
и вы бросаете строку, которая 3e+06
попробуйте привести его к BigInt и к Integer. Целое число может обрабатывать значение 3000000, это не проблема. Но у него есть проблема с приведением из строки, поэтому, используя мой путь, должно быть в порядке
Ты можешь использовать BigDecimal
а также BigInteger
как показано ниже:
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigIntExample {
public static void main(String[] args) {
String asString = "3e+06";
BigInteger number = new BigDecimal(asString).toBigInteger();
System.out.println("The number is : "+number);
}
}
Выход:
Номер: 3000000
Вы можете использовать BigDecimal intValue()
для научного обозначения целого типа, как:-
int val = new BigDecimal("3e+06").intValue(); // outputs :- 3000000
Если val
больше, чем Integer.MAX_VALUE
, ты можешь использовать BigInteger
лайк:-
BigInteger val = new BigDecimal("3e+06").toBigInteger(); // outputs :- 3000000