Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2017, 11:17   #1
WowWow
Новичок
Джуниор
 
Регистрация: 18.09.2017
Сообщений: 2
Вопрос Учу Java.Помогите понять как работает небольшой код

Есть следующий код:
Код:
public class Main {
    public static void main(String[] args) {
        int e, result;
        for(int i=0;i<10;i++) {
          result=1;
          e=i;
          while (e>0){
          result *=2;
          e--;
          }
          System.out.println("2 в степени "+i+" равно "+result);    
        }
    }
}
Считает целые степени для числа 2. Фрагмент из книги Герберта Шилдта.
Вот, что не могу понять:
Запускается цикл
1 шаг: i=0, следовательно e=0, следовательно внутренний while не выполняется. System.out.println выводит "2 в степени 0 равно 1"
2 шаг: i=1, следовательно e=1. переходим в while. result*=2 то же, что и result=result*2.
у result значение 1, значит в while оно принимает значение 2 и в выводе дает "2 в степени 1 равно 2" где 1 это i, а 2 это result- вопрос - правильно ли я понимаю что result берется из последнего while? а "e--" это декремент который придает "e" значение 0.- зачем? о_о
а вот с третьего шага я уже не понимаю вообще как считается
3 шаг: i=2, e=2 соответственно.
как здесь while работает^^^, каким образом result становится 4 если result*=2 при том что result остается 1 с самого начала?
на основе вот этого ^^^^^^ буду благодарен если знающий человек объяснит хотя бы, как выполняется 3 шаг или может что я пропустил в первых двух. буду оооочень благодарен.
WowWow вне форума Ответить с цитированием
Старый 18.09.2017, 11:27   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

давайте по шагам разложим.

цикл while - это же, как ни странно, есть ЦИКЛ, т.е. набор команд, который выполяется несколько раз.
это понятно?

дальше.
конструкция
while(e>0){
...
e--;
}
выполнится ровно столько раз, сколько единиц в значении переменной e:
если e=0 - то ноль раз (не выполнится)
если e=1 - то один раз
если e=2 - то два раза
если e=3 - то три раза
если e=4 - то четыре раза
и т.д.

это понятно?

теперь, что касается result *=2;
это запись сокращение от записи result = result*2;
она означает, умножим содержимое переменной result на 2 и результат запишем в переменную result
подумайте, что будет, если у нас result перед циклом равна 1, а данный оператор внутри цикла while выполняется дважды?

т.е. что будет в переменной result после выполнения такого кода:
Код:
result = 1;
result = result*2;
result = result*2;
теперь всё стало на свои места?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.09.2017, 11:30   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
правильно ли я понимаю что result берется из последнего while?
Что значит из последнего вайла? Он здесь один. Если вы сходили в магазин, потом еще раз - вы ходили 2 раза или только последний?

Цитата:
зачем? о_о
А цикл как у вас закончится?

Походу вам надо срочно прочитать, что такое цикл и как оно работает. Цикл выполняет свое тело пока выполняется условие.

Цитата:
каким образом result становится 4 если result*=2 при том что result остается 1 с самого начала?
result = 1
1 шаг: result = result * 2 -> result = 2
2 шаг: result = result * 2 -> result = 4
3 шаг: условие не выполняется, выход
p51x на форуме Ответить с цитированием
Старый 18.09.2017, 11:43   #4
WowWow
Новичок
Джуниор
 
Регистрация: 18.09.2017
Сообщений: 2
По умолчанию

Спасибо большое за объяснение, меньше месяца изучаю язык. Только дошел до вложенных циклов и запутался, не знаю как сразу не понял, спасибо ещё раз!
WowWow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать код сайта когда кликаешь блок в блоке квадратики круги, правильный или не правильный ответ, понять как он работает и как определять где правильный ответ bule Помощь студентам 19 12.08.2016 10:05
Помогите понять код OliverVood JavaScript, Ajax 10 15.11.2015 07:16
Помогите понять код (прокомментировать код шифрации на C++). bicks Помощь студентам 3 10.12.2013 21:31
Помогите понять код Arassir JavaScript, Ajax 1 12.05.2009 13:00
Помогите понять код MaGiCeYe Помощь студентам 1 02.04.2007 19:57