Java для начинающих. 6.3 Практика for-while

Поділитися
Вставка
  • Опубліковано 17 гру 2024

КОМЕНТАРІ • 111

  • @TnTn-ew3od
    @TnTn-ew3od 4 місяці тому

    dmdev хочу выразить благодарность за курсы. Честно признаюсь, увидел ваши курсы на торренте. К сожалению купить курсы нет возможности. А тяга к знаниям огромная. Каково было мое удивление когда я нашел Ваш канал с курсами, которые Вы выложили бесплатно!!! Огромная Вам благодарность!!! Надеюсь смогу всё таки осилить Java Core, Spring и Hibernate, и стать джуном. Спасибо ВАМ!

    • @dmdev
      @dmdev  4 місяці тому +1

      Главное не останавливаться! Тут как и во всем - нужно постоянство. Так что удачи!

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 2 роки тому +5

    Смотрю только 2й урок данного автора, если честно, я в восторге!!!
    Прекрасные примеры и задачи!!!
    Это 1 канал по java, где лично у меня максимальное понимание предмета!!!
    Огромная благодарность автору за контент!!!👍👍👍

    • @dmdev
      @dmdev  2 роки тому +2

      Воу, я очень рад!
      Только ты как-то просматриваешь непоследовательно (или в другую сторону)).
      Можешь что-то упустить!

    • @МаксМакс-ч8к
      @МаксМакс-ч8к 2 роки тому +1

      @@dmdev я 1.5, как начал заниматься java, стараюсь ,,добить,, не особо понятные темы!! Циклы в первую очередь!

    • @dmdev
      @dmdev  2 роки тому +1

      @@МаксМакс-ч8к

  • @vovawild
    @vovawild 3 роки тому +7

    Привет. Начал изучать Java с нуля. Очень понравились твои уроки. Смотрю, если не понимаю, то пересматриваю. Пока еще очень тяжело, хотя знаю, что надо много времени для достижения результата (бывает складывается такое впечатление что я тупой:)) Это все новое для меня. Просто крик души)))

    • @dmdev
      @dmdev  3 роки тому +3

      Привет!
      Спасибо за обратную связь!
      Такие и у меня мысли возникали и даже сейчас порой возникают, это нормально)

    • @ErikErik-ck9hw
      @ErikErik-ck9hw 2 роки тому +2

      +++ ты не один. Я с тобой ))))

    • @dmitrybaranov7447
      @dmitrybaranov7447 2 роки тому +3

      Ты не одинок! Я с тобой)))

    • @ИванКомаров-д8ф
      @ИванКомаров-д8ф 2 роки тому +2

      Спасибо тебе, что написал этот комментарий. Мне стало легче)

  • @Терентий-ю4ъ
    @Терентий-ю4ъ 3 роки тому +3

    Очень круто, что есть практика, делайте платный марафон в телеге с задачами и ревью, с удовольствием поучаствую.

    • @dmdev
      @dmdev  3 роки тому

      Спасибо за идею!

    • @dmdev
      @dmdev  3 роки тому +1

      Там еще и домашнее задание есть)

  • @lexalexa2661
    @lexalexa2661 2 роки тому +4

    Ты лучший , спасибо тебе за то что делаешь

    • @dmdev
      @dmdev  2 роки тому +2

      Всегда пожалуйста

  • @OlhaShu
    @OlhaShu Рік тому +1

    The last task was greatful!

    • @dmdev
      @dmdev  Рік тому

      You are welcome!

  • @НикитаЗдоровцев
    @НикитаЗдоровцев 3 роки тому +2

    да и спасибо автору! сделать так интересно и качественно! хвала и почет!

    • @dmdev
      @dmdev  3 роки тому +1

      Всегда пожалуйста!
      Очень рад, что вам понравилось. Дальше будет еще интереснее)

  • @ilyasamilyak6517
    @ilyasamilyak6517 2 роки тому +1

    Начинаю с нуля, неуспеваю за мыслями автора)

    • @dmdev
      @dmdev  2 роки тому +2

      Ничего страшного.
      Сделай паузу, просмотри еще раз или скорость уменьши воспроизведения видео, а главное - повторяй за мной и практикуйся писать код!

  • @ДмитрийКустов-у9о
    @ДмитрийКустов-у9о 2 роки тому +2

    Денис, спасибо большое за уроки!
    Ну хоть убей, не понимаю, почему int result = 1;
    Почему именно 1? Что значит эта 1?)

    • @dmdev
      @dmdev  2 роки тому +2

      Это просто значение по умолчанию, которое ты сам выбираешь, чтобы подошло под твой алгоритм. Вот ты же начинаешь считать вещи, начиная от 1, а не какого-нибудь другого числа)

    • @ДмитрийКустов-у9о
      @ДмитрийКустов-у9о 2 роки тому

      @@dmdev Понял, спасибо большое)

    • @dmdev
      @dmdev  2 роки тому

      @@ДмитрийКустов-у9о Всегда пожалуйста!

  • @polinakrasovskaya7479
    @polinakrasovskaya7479 4 роки тому +4

    w является также условно гласной) для последней задачи

    • @dmdev
      @dmdev  4 роки тому +2

      Есть такое. Но мы не рассматривали условно гласные, да и не критично для решения задачи, можно добавить еще одну букву, если это так важно.
      Википедия говорит про буквы W и R следующее: "Буква «W» самостоятельно означает согласный звук, но используется и в составе диграфов, обозначающих гласные звуки[источник не указан 1099 дней]. В британском произношении (англ. received pronunciation) то же верно и для буквы «R»"

  • @dmitrybaranov7447
    @dmitrybaranov7447 2 роки тому +3

    Подскажите, а почему при делении 12345 на 10 последнее число отбрасывается? Есть число, его делят на 10, просто оно становится 1234,5, далее - 123,45. Где неправ? Хочу разобраться. Спасибо! P.S. Правильно ли я понял, что значение переменной value - целое число, поэтому последнее число после деления на 10 отбрасывается?

    • @dmdev
      @dmdev  2 роки тому +3

      Да, ты правильно понял. int - это целочисленный тип и не умеет хранить вещественную часть, поэтому она автоматически отбрасывается

  • @Павел-з1ж4п
    @Павел-з1ж4п Рік тому +1

    Денис, здравствуйте. Подскажите, пожалуйста, каким шрифтом написан Ваш код? Хочу такой же =)

    • @dmdev
      @dmdev  Рік тому

      Обычный стандартный от IntelliJ IDEA. Я не менял его никогда

    • @Павел-з1ж4п
      @Павел-з1ж4п Рік тому

      @@dmdev Понял. Значит, в новых версиях они его немного изменили. У меня тоже стандартный, но немного отличается =) Спасибо за ответ👍

    • @dmdev
      @dmdev  Рік тому

      @@Павел-з1ж4п

  • @СветаНовосельцева-о8ц

    факториал
    Scanner scan = new Scanner(System.in);
    System.out.println("Введите число: ");
    int c = 1;
    int b = scan.nextInt();
    for(int i = 1; i != b; i++, c *= i);
    System.out.println(c);

    • @dmdev
      @dmdev  3 роки тому +2

      Неплохо!
      Только хуже читается, потому что в for не стоит засовывать арифметические операции, которые никак не связаны с изменением проинициализированных значений в первом блоке for, в твоем случае это int i = 1;

    • @СветаНовосельцева-о8ц
      @СветаНовосельцева-о8ц 3 роки тому +1

      @@dmdev Спасибо, учту на будущее

  • @АндрейДемиков
    @АндрейДемиков 3 роки тому

    в задании №1 в цикле нужно использовать условие currentValue > 0, так как если использовать условие currentValue != 0, то при вводе числа с нулем (например 100234) цикл будет прерываться при первом получении остатка по модулю равным нулю, соответсвенно результат будет не корректным.

    • @dmdev
      @dmdev  3 роки тому +1

      Наверное, имеется в виду задача 2. Но там в currentValue не остаток от деления хранится, а само число после деления на 10. Поэтому все равно какое число вводить, с нулями или без. Очень советую использовать debug для задач на первых порах, про него чуть дальше в этом курсе будет рассказано

  • @emphantom9122
    @emphantom9122 2 роки тому +1

    здравствуйте . делаю уроки. очень нравится. но есть ошибки у меня. у вас в 13 строчке написано : double result = sum(sourceSum); у меня выдает ошибку , мне Idea предлогает сделать так строчку : double result = sum((int) sourceSum); и тогда пример правильный. можете пояснить? спасибо. PS. вы есть в телеграме ?

    • @dmdev
      @dmdev  2 роки тому +1

      Значит твоя функция sum возвращает не int (читай ошибки компиляции, что тебе пишет idea).
      Да, есть в телеграме: t.me/dmdev_talks

    • @emphantom9122
      @emphantom9122 2 роки тому

      @@dmdev хм , но ответ получился как у вас. Посмотрю конечно ещё раз... но проверял по строкам

    • @ИванКомаров-д8ф
      @ИванКомаров-д8ф 2 роки тому +1

      У меня тоже такое было. Это случилось из-за того при введении параметров в функцию я написал int sourceSam. В итоге исправил на double sourceSam и получилось все как нужно

  • @alexxxyzzz
    @alexxxyzzz Рік тому +1

    13:00 Решение Дениса.
    Моё решение:
    private static int getSumDigits(int number) {
    int result = 0;
    int digit = 1;
    int divider = 1;
    int countDigit = getDigitsCount(number);
    while (digit

    • @dmdev
      @dmdev  Рік тому

      Ну, ничего страшного. Более компактные решения приходят с опытом. Тут главное продолжать и не останавливаться!

  • @YouMeNow88
    @YouMeNow88 2 роки тому +1

    Можно по 2 задачке еще вопрос? Сначала мы забрали 5 как остаток от деления, ок. А как тогда у нас потом останется 1234 а не 12345 ??? Как Идея забирает эту 5ку и оставляет 1234 ??? Уже дебагером посмотрел, да отнимает но каким образом. Сколько не отнимай все равно текущее число останется текущим и как забирается одна последняя цифра непонятно))

    • @dmdev
      @dmdev  2 роки тому +1

      Привет!
      Когда ты делишь целое число на 10 - то как раз и отбрасывается последнее число:
      12345 / 10 = 1234;
      Главное не забыть сохранить это новое число 1234 - в переменную

  • @miajibl4534
    @miajibl4534 2 роки тому +1

    в 4 задаче не обязательно проходить циклом до value, достаточно до value/2

    • @dmdev
      @dmdev  2 роки тому +1

      Алгоритмическую сложность алгоритма это не меняет.
      Поэтому не критично, но довольно неплохо подмечено!

  • @Prady_sh
    @Prady_sh 3 роки тому +1

    НЕ очень понял в задании № 2, while (currentValue != 0) почему именно так работает, а не == 0 например

    • @dmdev
      @dmdev  3 роки тому +1

      Цикл работает ДО ТЕХ ПОР ПОКА currentValue != 0. Если мы сделаем ДО ТЕХ ПОР ПОКА currentValue == 0 - то даже не зайдем в цикл, потому что currentValue - это какое-то положительное число и мы его просто делим на 10 в теле цикла, чтобы рано или поздно currentValue не стало 0 и мы вышли из цикла.

    • @Prady_sh
      @Prady_sh 3 роки тому +1

      @@dmdev т.е. надо выйти из цикла до того как currentValue станет 0. Оно и получается != 0. А почему с 0 не прокатит) ладно. Спасибо тебе большое !

    • @dmdev
      @dmdev  3 роки тому +1

      @@Prady_sh совсем скоро ты дойдёшь до дебага - обязательно дебажь программы, чтобы разобраться!

    • @Prady_sh
      @Prady_sh 3 роки тому +1

      @@dmdev Надеюсь я найду ответ для себя и в моей голове все уляжется ) а тебе ещё раз спасибо!

    • @dmdev
      @dmdev  3 роки тому +1

      @@Prady_sh Найдешь, это буквально предпоследнее видео в этом плейлисте! Всегда пожалуйста

  • @sergei_voitenkov
    @sergei_voitenkov 4 роки тому +1

    Денис, а почему ты методы называешь функциями ? В книгах больше упор делают на методы, а функции типо С+. Спасибо за ответ.

    • @dmdev
      @dmdev  4 роки тому +2

      Я это буду объяснять в playlist Level 2, практически в самом начале :)

    • @sergei_voitenkov
      @sergei_voitenkov 4 роки тому +1

      @@dmdev понял :)) нужно изучить весь канал и после задавать вопросы ... :) поехал дальше

    • @dmdev
      @dmdev  4 роки тому +2

      Не обязательно. Если вопрос касается конкретно этой темы, то почему бы и не спросить)
      Но большинство твоих вопросов да, закроются сами по себе во время просмотра всех видео на моем канале

  • @kotbegemot9177
    @kotbegemot9177 3 роки тому +1

    считаю ошибкой в Task 3 каждый раз в цикле for объявлять double переменную percent
    Upd: и зачем в 18 строчке передаешь значение переменной SourceSum в переменную result?зачем эти лишние телодвижения?

    • @dmdev
      @dmdev  3 роки тому +3

      Почему ты считаешь это ошибкой?
      Порой делают переменные с хорошим названием, чтобы код читался лучше, а не просто в одну строку записывают сложное выражение.
      Переменная result создана потому, что плохо менять параметры функции. Я в видео говорил (возможно не в этом), что правило хорошего тона - это неизменяемые параметры функции

  • @Prady_sh
    @Prady_sh 3 роки тому +2

    А сильно плохо, что я пока не могу решить задачи, что ты решаешь в этом видео. У меня логики не хватает как это посчитать / записать

    • @dmdev
      @dmdev  3 роки тому +2

      Все ок. В последнем видео этого курса я расскажу, как научиться решать также

    • @Prady_sh
      @Prady_sh 3 роки тому +1

      @@dmdev Понял, спасибо.

  • @bestrelaxationmusic1417
    @bestrelaxationmusic1417 2 роки тому

    1 * 1 понятно. А где берется 2 * 2 и так далее ?

    • @dmdev
      @dmdev  2 роки тому

      Это ты о какой задаче спрашиваешь?

    • @bestrelaxationmusic1417
      @bestrelaxationmusic1417 2 роки тому

      @@dmdev первая. Где вы вне цикла объявили переменную result. Не понятен алгоритм с ней после

  • @rysnurlanov8012
    @rysnurlanov8012 4 роки тому +3

    Спасибо, крутой контент
    На счёт звука все хорошо
    Может быть лучше, но и так нормально)👍🏻👍🏻
    Можно ваши соцсети?

    • @dmdev
      @dmdev  4 роки тому

      telegram: t.me/joinchat/ElmRuxSedfMEKnW-sLqY_w

    • @lesterbruke8166
      @lesterbruke8166 3 роки тому

      лучшее - враг хорошего)

  • @ErikErik-ck9hw
    @ErikErik-ck9hw 2 роки тому

    Также не успеваю за мыслями автора. Сложно)
    Но через терни к звёздам как говорится.
    Можно по подробней про момент с определением переменной results. Не могу сопоставить её с циклом for. За счёт чего получается это последовательное умножение…

    • @dmdev
      @dmdev  2 роки тому +1

      Мы присвоили result = 1 перед циклом
      а потом в цикле умножаем ее:
      - сначала на единицу: 1 * 1 = 1
      - потом предыдущий результат умножаем на 2: 1 * 2 = 2
      - потом предыдущий результат умножаем на 3: 2 * 3 = 6
      - потом предыдущий результат умножаем на 4: 6 * 4 = 24
      И т.д.
      Что именно было не понятно здесь?

    • @ErikErik-ck9hw
      @ErikErik-ck9hw 2 роки тому

      @@dmdev Не понятно как происходит действие умножения предыдущего результата на будущее число. Если переменная резулт остаётся не изменной. Что то я запутался.

    • @ErikErik-ck9hw
      @ErikErik-ck9hw 2 роки тому

      @@dmdev мне видится, что на каждый из множетелей, мы умножаем 1
      1 * 2
      1 * 3
      1 * 4...
      и не могу понять почему это не так.

    • @ErikErik-ck9hw
      @ErikErik-ck9hw 2 роки тому

      @@dmdev цикл for крутится инкрементируя каждый раз на 1 единицу больше, и резулт*=i я вижу как умножение
      1*1
      1*2
      1*3
      как в цикл попадает тот самый предыдущий результат ?

    • @dmdev
      @dmdev  2 роки тому

      @@ErikErik-ck9hw она изменяется постоянно в цикле, используется же оператор присваивания = (result *= i, или как я показывал в видео result = result * i).
      Почему ты решил, что result неизменный?

  • @НикитаЗдоровцев
    @НикитаЗдоровцев 3 роки тому +1

    задача с char так тяжело заходила, что пришлось развернуть ее в XLS и пальчиком считать клеточки с алфавитом)

    • @dmdev
      @dmdev  3 роки тому +1

      ого, серьезно подошел к задаче!

  • @василинасемёнова-ы5н

    освежаю память, совсем забыла про char) пришлось ещё и загуглить почему у меня char не прибавляется. В итоге вот:
    char a = 'a';
    a = a++; // этот способ не работает из-за неявного сужающего преобразования.
    char b = 'a';
    b++;
    char c = 'a';
    c = (char) (c + 1);
    char d = 'a';
    d += 1;

  • @oleksandrkuzmin8655
    @oleksandrkuzmin8655 2 роки тому +1

    блин я все это уже давно прошел и в целом по jave ничего нового, и задачки вроде легенькие, а всеравно пришлось запарится чутка)

    • @dmdev
      @dmdev  2 роки тому +1

      Значит развиваешься)
      Когда все просто - то такие задачи бессмысленны!

  • @xirrantos
    @xirrantos 4 роки тому

    Разве цикл isSimple правильный?
    15, например, не делится без остатка на 2, но это не простое число, оно делится на 5.
    PS: До меня дошло, там "if" :D

    • @dmdev
      @dmdev  4 роки тому

      Хорошо, что разобрались)

  • @Prady_sh
    @Prady_sh 3 роки тому +1

    ПРОСТИ!!)) но я совсем могу понять!
    for (int currentValue = value; currentValue != 0; currentValue /= 10) {
    result += currentValue % 10;
    тут мы сначала делим на 10 а потом уже записывая в result делим на %.
    А тут мы уже Сначала делим на %, а потом уже на / 10
    int currentValue = value;
    while (currentValue != 0) {
    result += currentValue % 10;
    currentValue /= 10;

    • @dmdev
      @dmdev  3 роки тому +1

      Не совсем. Просто в цикле for третья часть, где происходит изменение (currentValue /= 10) - не выполняется при первой итерации. Поэтому обе записи эквивалентны

    • @Prady_sh
      @Prady_sh 3 роки тому

      @@dmdev где можно почитать/посмотреть как выполняются итерации. Что бы понять как это все работает. Спасг

    • @dmdev
      @dmdev  3 роки тому +2

      @@Prady_sh в цикле for - первая инциализационная часть выполняется только в первую итерацию. Вторая условная часть выполняется всегда. Третья часть изменения - выполняется как будто после тела цикла, поэтому кажется, что она пропускается в первой итерации. Все как с циклом while, поэтому я и писал аналог его. В последнем видео этого плейлиста я скажу где что почитать можно

    • @Prady_sh
      @Prady_sh 3 роки тому

      @@dmdev 👍🏻

    • @Prady_sh
      @Prady_sh 3 роки тому

      @@dmdev отлично, спасибо, нашёл эту инфу и закрепил. Теперь понял ))) спасибо!

  • @guranatto
    @guranatto 2 роки тому

    на видео с практикой совершенно не понимаю логики даже с объяснениями автора. Как уже писали некоторые комментаторы, не покидает чувство собственной неполноценности(

    • @dmdev
      @dmdev  2 роки тому +1

      Все испытывали такое чувство, когда начинали программировать. Поэтому, лучше сразу оставь его, чтобы не мешал изучать Java.
      На предпоследнем видео я покажу debug - вот его очень советую использовать, чтобы пошагово разбираться в готовых решения, а потом при написании своих

  • @lkghost7
    @lkghost7 4 роки тому

    тут вобще тихо, может стоит даже перезалить, я на максимум выкрутил громкость и то не сильно громко стало. для долгосрочной перспективы нужно до ума довести )

    • @dmdev
      @dmdev  4 роки тому +1

      Не сказал бы, что прям тихо, но да, тише, чем в последних видео. Спасибо!

  • @АлексейТимошенко-л6и

    6 миллиардов за Манхэттен - это копейки и обман.
    Кроме того, индейцам никогда бы не отдали их деньги, если бы те положили их в банк.

    • @dmdev
      @dmdev  2 роки тому +2

      Согласен, нет в этом мире справедливости)

  • @ЮсуфБуриев-н9у
    @ЮсуфБуриев-н9у 3 роки тому +2

    Вроде все понимаю,но так как мне 15 лет иногда не понятно) (либо это я дурачок :) )

    • @dmdev
      @dmdev  3 роки тому +2

      Ничего страшного, больше практики и решения домашних заданий под видео - и все!

  • @Prady_sh
    @Prady_sh 3 роки тому

    А это нормально, что я уже 2 дня в циклах разбираюсь, или я тупой ? ))))

    • @dmdev
      @dmdev  3 роки тому +1

      2 дня по-твоему - это много?)

    • @Prady_sh
      @Prady_sh 3 роки тому

      @@dmdev думал, да. До циклов как то прям все хорошо усваивалось. Циклы вынос в новую функцию, факториалы, потерялся. Т.е. если я застрял чуть чуть) это норм) таким трудом пробиваться )

    • @dmdev
      @dmdev  3 роки тому +1

      @@Prady_sh да. Так частенько бывает. Рывками идет понимание. Сначала может быть быстро, потом застрял, потом вернулся назад, затем опять изучаешь новый материал

    • @Prady_sh
      @Prady_sh 3 роки тому +1

      @@dmdev Понял, а то в такие моменты разные мысли лезут. Спасибо!

    • @dmdev
      @dmdev  3 роки тому +1

      @@Prady_sh тут главное продолжать и не сдаваться. И успех неизбежен)

  • @SK-ps9kt
    @SK-ps9kt 2 роки тому

    @em phantom, та же ерунда, вот что пишет: 'sum(int)' in 'com.dmdev.Task.Task3' cannot be applied to '(double)'. @dmdev Если можно поясните ситуацию.

    • @dmdev
      @dmdev  2 роки тому +1

      ты используешь разные типы данных. Например, если функция принимает int, значит ты не можешь передавать туда double

  • @vip51000
    @vip51000 Рік тому

    Можно ли для второй задачи, для указания текущего года написать так: LocalDate.now().getYear() ?

    • @dmdev
      @dmdev  Рік тому +1

      Можно, почему нет?