Подтвердить что ты не робот

Android: переменная имеет неправильное значение во время цикла

При разработке Android-приложения в Android Studio переменная, используемая в цикле while, имеет неправильное значение. Я уменьшил его в тестовом примере до очень простого случая:

  • Создайте новый проект в Android Studio, пустое мероприятие
  • Добавить следующий код в основное действие

метод onStart:

@Override
public void onStart() {
    super.onStart();

    int count = 2;
    int index = 1;

    int value = 23;

    Log.i("test", "value before = " + value);
    while (index < count) {
        Log.i("test", "value in while loop = " + value);
        index++;
        value = 0;
    }
}

Вывод при выполнении тестового приложения:

value before = 23
value in while loop = 0

в то время как результат должен быть

value in while loop = 23

При отладке результат будет таким же ожидаемым ( "значение во время цикла = 23" ), но в обычной сборке отладки это неверно. Разделенный код основного класса активности выглядит нормально, значение переменной "значение" устанавливается в 0 в конце тела цикла while. Когда какой-либо код или функция внутри цикла while использует переменную 'value', она будет иметь значение 0 вместо 23. В тестовом примере я использую оператор Log для упрощения.

Неправильно, когда я меняю строку

value = 0;

к

if (value == 23) {
    value = 0;
}

или когда я удаляю строку

value = 0; 

Таким образом, это выглядит как некоторая ошибка оптимизации. Но какая оптимизация сделана, что может вызвать это? Это делает код ненадежным.

4b9b3361

Ответ 1

Если вы действительно уверены, что написанный код работает правильно, то с этого момента вы должны начать проверять (заказывать):

  • Конфигурация
  • → полностью ли ваша конфигурация проекта с версиями Java, jdks или версией Java совместима с используемыми библиотеками Android? Правильно ли настроены ваши библиотеки Java и Andorid?
  • environment → является ваш эмулятор отладки сторонней библиотекой или ваше устройство для отладки является допустимым устройством для отладки вашего кода? Является ли ваша система кодирования совместимой с вашей идеей, версией Java или Android-библиотеками?
  • JVM → Вы пытались удалить и переустановить с правильным исходным кодом для Java jdk с используемой версией?

Возможно, вам нужно дать некоторые сведения о вашей среде, например, о версии Java, версии Android min, ОС или используемой вами среде IDE.

Я надеюсь, что эти пули сделают вам правильные ассоциации, чтобы решить вашу проблему.