Вопрос про значение переменной в цикле

258
11 апреля 2017, 09:03

Есть код. На выводе получается последовательное возведение 2 в степень (10 раз). Но ведь значение переменной res присваивается в цикле, по логике (моей), оно должно каждый раз присваиваться заново, но вместо этого увеличивается. Объясните доступно, пожалуйста, почему так происходит, почему сохраняется результат последнего перемножения.

public class Quadro {
    public static void main(String[] args) {
        int e, res;
        for(int i=0; i<10; i++) {
            res=1;
            e=i;
            while(e>0){
                res*=2;
                e--;
            }
            System.out.println(res);
        }
    }
}
Answer 1

Оно и присваивается заново. А вот e всё время растёт, т.к. i растёт. А т.к. res на 2 умножается столько раз, каково у нас значение e, то в каждой итерации цикла res становится больше в 2 раза на момент выхода из текущей итерации.

READ ALSO
Cвернуть лист объектов с подсчетом поторений используя stream()

Cвернуть лист объектов с подсчетом поторений используя stream()

В поисках элегантного решения задался вопросом: Каа преобразовать список объектов в массив с подсчетом количества повторенийТ

252
хранение java.util.Date в mySQL

хранение java.util.Date в mySQL

Сохраняю сущность в бд с датой

326
где изучить распределенные вычисления [требует правки]

где изучить распределенные вычисления [требует правки]

существуют ли эффективные образовательные курсы по распределенным вычислениямна java

544