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;
Таким образом, это выглядит как некоторая ошибка оптимизации. Но какая оптимизация сделана, что может вызвать это? Это делает код ненадежным.
Ответы
Ответ 1
Если вы действительно уверены, что написанный код работает правильно, то с этого момента вы должны начать проверять (заказывать):
-
Конфигурация
- → полностью ли ваша конфигурация проекта с версиями Java, jdks или версией Java совместима с используемыми библиотеками Android? Правильно ли настроены ваши библиотеки Java и Andorid?
- environment → является ваш эмулятор отладки сторонней библиотекой или ваше устройство для отладки является допустимым устройством для отладки вашего кода? Является ли ваша система кодирования совместимой с вашей идеей, версией Java или Android-библиотеками?
- JVM → Вы пытались удалить и переустановить с правильным исходным кодом для Java jdk с используемой версией?
Возможно, вам нужно дать некоторые сведения о вашей среде, например, о версии Java, версии Android min, ОС или используемой вами среде IDE.
Я надеюсь, что эти пули сделают вам правильные ассоциации, чтобы решить вашу проблему.