У меня есть ошибка исключения числового формата

Я получил эту ошибку "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 ответа

Решение

Прежде всего, вы должны опубликовать некоторый код, но:

  1. какое значение вы анализируете?

  2. самый быстрый способ проверить, является ли значение слишком большим, - это разбор 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
Другие вопросы по тегам