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

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

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

Метод 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»), но в регулярной сборке отладки это неверно. Разделенный код основного класса активности выглядит нормально, значение переменной 'value' устанавливается в 0 в конце тела цикла while. Когда какой-либо код или функция внутри цикла while использует переменную 'value', она будет иметь значение 0 вместо 23. В тестовом примере я использую оператор Log для упрощения.

Если я изменю строку, это не пойдет не так

 value = 0; 

в

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

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

 value = 0; 

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

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

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

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

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

Intereting Posts