dmdev хочу выразить благодарность за курсы. Честно признаюсь, увидел ваши курсы на торренте. К сожалению купить курсы нет возможности. А тяга к знаниям огромная. Каково было мое удивление когда я нашел Ваш канал с курсами, которые Вы выложили бесплатно!!! Огромная Вам благодарность!!! Надеюсь смогу всё таки осилить Java Core, Spring и Hibernate, и стать джуном. Спасибо ВАМ!
Смотрю только 2й урок данного автора, если честно, я в восторге!!! Прекрасные примеры и задачи!!! Это 1 канал по java, где лично у меня максимальное понимание предмета!!! Огромная благодарность автору за контент!!!👍👍👍
Привет. Начал изучать Java с нуля. Очень понравились твои уроки. Смотрю, если не понимаю, то пересматриваю. Пока еще очень тяжело, хотя знаю, что надо много времени для достижения результата (бывает складывается такое впечатление что я тупой:)) Это все новое для меня. Просто крик души)))
Это просто значение по умолчанию, которое ты сам выбираешь, чтобы подошло под твой алгоритм. Вот ты же начинаешь считать вещи, начиная от 1, а не какого-нибудь другого числа)
Есть такое. Но мы не рассматривали условно гласные, да и не критично для решения задачи, можно добавить еще одну букву, если это так важно. Википедия говорит про буквы W и R следующее: "Буква «W» самостоятельно означает согласный звук, но используется и в составе диграфов, обозначающих гласные звуки[источник не указан 1099 дней]. В британском произношении (англ. received pronunciation) то же верно и для буквы «R»"
Подскажите, а почему при делении 12345 на 10 последнее число отбрасывается? Есть число, его делят на 10, просто оно становится 1234,5, далее - 123,45. Где неправ? Хочу разобраться. Спасибо! P.S. Правильно ли я понял, что значение переменной value - целое число, поэтому последнее число после деления на 10 отбрасывается?
факториал 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);
Неплохо! Только хуже читается, потому что в for не стоит засовывать арифметические операции, которые никак не связаны с изменением проинициализированных значений в первом блоке for, в твоем случае это int i = 1;
в задании №1 в цикле нужно использовать условие currentValue > 0, так как если использовать условие currentValue != 0, то при вводе числа с нулем (например 100234) цикл будет прерываться при первом получении остатка по модулю равным нулю, соответсвенно результат будет не корректным.
Наверное, имеется в виду задача 2. Но там в currentValue не остаток от деления хранится, а само число после деления на 10. Поэтому все равно какое число вводить, с нулями или без. Очень советую использовать debug для задач на первых порах, про него чуть дальше в этом курсе будет рассказано
здравствуйте . делаю уроки. очень нравится. но есть ошибки у меня. у вас в 13 строчке написано : double result = sum(sourceSum); у меня выдает ошибку , мне Idea предлогает сделать так строчку : double result = sum((int) sourceSum); и тогда пример правильный. можете пояснить? спасибо. PS. вы есть в телеграме ?
У меня тоже такое было. Это случилось из-за того при введении параметров в функцию я написал int sourceSam. В итоге исправил на double sourceSam и получилось все как нужно
13:00 Решение Дениса. Моё решение: private static int getSumDigits(int number) { int result = 0; int digit = 1; int divider = 1; int countDigit = getDigitsCount(number); while (digit
Можно по 2 задачке еще вопрос? Сначала мы забрали 5 как остаток от деления, ок. А как тогда у нас потом останется 1234 а не 12345 ??? Как Идея забирает эту 5ку и оставляет 1234 ??? Уже дебагером посмотрел, да отнимает но каким образом. Сколько не отнимай все равно текущее число останется текущим и как забирается одна последняя цифра непонятно))
Привет! Когда ты делишь целое число на 10 - то как раз и отбрасывается последнее число: 12345 / 10 = 1234; Главное не забыть сохранить это новое число 1234 - в переменную
Цикл работает ДО ТЕХ ПОР ПОКА currentValue != 0. Если мы сделаем ДО ТЕХ ПОР ПОКА currentValue == 0 - то даже не зайдем в цикл, потому что currentValue - это какое-то положительное число и мы его просто делим на 10 в теле цикла, чтобы рано или поздно currentValue не стало 0 и мы вышли из цикла.
Не обязательно. Если вопрос касается конкретно этой темы, то почему бы и не спросить) Но большинство твоих вопросов да, закроются сами по себе во время просмотра всех видео на моем канале
считаю ошибкой в Task 3 каждый раз в цикле for объявлять double переменную percent Upd: и зачем в 18 строчке передаешь значение переменной SourceSum в переменную result?зачем эти лишние телодвижения?
Почему ты считаешь это ошибкой? Порой делают переменные с хорошим названием, чтобы код читался лучше, а не просто в одну строку записывают сложное выражение. Переменная result создана потому, что плохо менять параметры функции. Я в видео говорил (возможно не в этом), что правило хорошего тона - это неизменяемые параметры функции
Также не успеваю за мыслями автора. Сложно) Но через терни к звёздам как говорится. Можно по подробней про момент с определением переменной results. Не могу сопоставить её с циклом for. За счёт чего получается это последовательное умножение…
Мы присвоили result = 1 перед циклом а потом в цикле умножаем ее: - сначала на единицу: 1 * 1 = 1 - потом предыдущий результат умножаем на 2: 1 * 2 = 2 - потом предыдущий результат умножаем на 3: 2 * 3 = 6 - потом предыдущий результат умножаем на 4: 6 * 4 = 24 И т.д. Что именно было не понятно здесь?
@@dmdev Не понятно как происходит действие умножения предыдущего результата на будущее число. Если переменная резулт остаётся не изменной. Что то я запутался.
@@dmdev цикл for крутится инкрементируя каждый раз на 1 единицу больше, и резулт*=i я вижу как умножение 1*1 1*2 1*3 как в цикл попадает тот самый предыдущий результат ?
@@ErikErik-ck9hw она изменяется постоянно в цикле, используется же оператор присваивания = (result *= i, или как я показывал в видео result = result * i). Почему ты решил, что result неизменный?
освежаю память, совсем забыла про char) пришлось ещё и загуглить почему у меня char не прибавляется. В итоге вот: char a = 'a'; a = a++; // этот способ не работает из-за неявного сужающего преобразования. char b = 'a'; b++; char c = 'a'; c = (char) (c + 1); char d = 'a'; d += 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;
Не совсем. Просто в цикле for третья часть, где происходит изменение (currentValue /= 10) - не выполняется при первой итерации. Поэтому обе записи эквивалентны
@@Prady_sh в цикле for - первая инциализационная часть выполняется только в первую итерацию. Вторая условная часть выполняется всегда. Третья часть изменения - выполняется как будто после тела цикла, поэтому кажется, что она пропускается в первой итерации. Все как с циклом while, поэтому я и писал аналог его. В последнем видео этого плейлиста я скажу где что почитать можно
на видео с практикой совершенно не понимаю логики даже с объяснениями автора. Как уже писали некоторые комментаторы, не покидает чувство собственной неполноценности(
Все испытывали такое чувство, когда начинали программировать. Поэтому, лучше сразу оставь его, чтобы не мешал изучать Java. На предпоследнем видео я покажу debug - вот его очень советую использовать, чтобы пошагово разбираться в готовых решения, а потом при написании своих
тут вобще тихо, может стоит даже перезалить, я на максимум выкрутил громкость и то не сильно громко стало. для долгосрочной перспективы нужно до ума довести )
@@dmdev думал, да. До циклов как то прям все хорошо усваивалось. Циклы вынос в новую функцию, факториалы, потерялся. Т.е. если я застрял чуть чуть) это норм) таким трудом пробиваться )
@@Prady_sh да. Так частенько бывает. Рывками идет понимание. Сначала может быть быстро, потом застрял, потом вернулся назад, затем опять изучаешь новый материал
dmdev хочу выразить благодарность за курсы. Честно признаюсь, увидел ваши курсы на торренте. К сожалению купить курсы нет возможности. А тяга к знаниям огромная. Каково было мое удивление когда я нашел Ваш канал с курсами, которые Вы выложили бесплатно!!! Огромная Вам благодарность!!! Надеюсь смогу всё таки осилить Java Core, Spring и Hibernate, и стать джуном. Спасибо ВАМ!
Главное не останавливаться! Тут как и во всем - нужно постоянство. Так что удачи!
Смотрю только 2й урок данного автора, если честно, я в восторге!!!
Прекрасные примеры и задачи!!!
Это 1 канал по java, где лично у меня максимальное понимание предмета!!!
Огромная благодарность автору за контент!!!👍👍👍
Воу, я очень рад!
Только ты как-то просматриваешь непоследовательно (или в другую сторону)).
Можешь что-то упустить!
@@dmdev я 1.5, как начал заниматься java, стараюсь ,,добить,, не особо понятные темы!! Циклы в первую очередь!
@@МаксМакс-ч8к
Привет. Начал изучать Java с нуля. Очень понравились твои уроки. Смотрю, если не понимаю, то пересматриваю. Пока еще очень тяжело, хотя знаю, что надо много времени для достижения результата (бывает складывается такое впечатление что я тупой:)) Это все новое для меня. Просто крик души)))
Привет!
Спасибо за обратную связь!
Такие и у меня мысли возникали и даже сейчас порой возникают, это нормально)
+++ ты не один. Я с тобой ))))
Ты не одинок! Я с тобой)))
Спасибо тебе, что написал этот комментарий. Мне стало легче)
Очень круто, что есть практика, делайте платный марафон в телеге с задачами и ревью, с удовольствием поучаствую.
Спасибо за идею!
Там еще и домашнее задание есть)
Ты лучший , спасибо тебе за то что делаешь
Всегда пожалуйста
The last task was greatful!
You are welcome!
да и спасибо автору! сделать так интересно и качественно! хвала и почет!
Всегда пожалуйста!
Очень рад, что вам понравилось. Дальше будет еще интереснее)
Начинаю с нуля, неуспеваю за мыслями автора)
Ничего страшного.
Сделай паузу, просмотри еще раз или скорость уменьши воспроизведения видео, а главное - повторяй за мной и практикуйся писать код!
Денис, спасибо большое за уроки!
Ну хоть убей, не понимаю, почему int result = 1;
Почему именно 1? Что значит эта 1?)
Это просто значение по умолчанию, которое ты сам выбираешь, чтобы подошло под твой алгоритм. Вот ты же начинаешь считать вещи, начиная от 1, а не какого-нибудь другого числа)
@@dmdev Понял, спасибо большое)
@@ДмитрийКустов-у9о Всегда пожалуйста!
w является также условно гласной) для последней задачи
Есть такое. Но мы не рассматривали условно гласные, да и не критично для решения задачи, можно добавить еще одну букву, если это так важно.
Википедия говорит про буквы W и R следующее: "Буква «W» самостоятельно означает согласный звук, но используется и в составе диграфов, обозначающих гласные звуки[источник не указан 1099 дней]. В британском произношении (англ. received pronunciation) то же верно и для буквы «R»"
Подскажите, а почему при делении 12345 на 10 последнее число отбрасывается? Есть число, его делят на 10, просто оно становится 1234,5, далее - 123,45. Где неправ? Хочу разобраться. Спасибо! P.S. Правильно ли я понял, что значение переменной value - целое число, поэтому последнее число после деления на 10 отбрасывается?
Да, ты правильно понял. int - это целочисленный тип и не умеет хранить вещественную часть, поэтому она автоматически отбрасывается
Денис, здравствуйте. Подскажите, пожалуйста, каким шрифтом написан Ваш код? Хочу такой же =)
Обычный стандартный от IntelliJ IDEA. Я не менял его никогда
@@dmdev Понял. Значит, в новых версиях они его немного изменили. У меня тоже стандартный, но немного отличается =) Спасибо за ответ👍
@@Павел-з1ж4п
факториал
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);
Неплохо!
Только хуже читается, потому что в for не стоит засовывать арифметические операции, которые никак не связаны с изменением проинициализированных значений в первом блоке for, в твоем случае это int i = 1;
@@dmdev Спасибо, учту на будущее
в задании №1 в цикле нужно использовать условие currentValue > 0, так как если использовать условие currentValue != 0, то при вводе числа с нулем (например 100234) цикл будет прерываться при первом получении остатка по модулю равным нулю, соответсвенно результат будет не корректным.
Наверное, имеется в виду задача 2. Но там в currentValue не остаток от деления хранится, а само число после деления на 10. Поэтому все равно какое число вводить, с нулями или без. Очень советую использовать debug для задач на первых порах, про него чуть дальше в этом курсе будет рассказано
здравствуйте . делаю уроки. очень нравится. но есть ошибки у меня. у вас в 13 строчке написано : double result = sum(sourceSum); у меня выдает ошибку , мне Idea предлогает сделать так строчку : double result = sum((int) sourceSum); и тогда пример правильный. можете пояснить? спасибо. PS. вы есть в телеграме ?
Значит твоя функция sum возвращает не int (читай ошибки компиляции, что тебе пишет idea).
Да, есть в телеграме: t.me/dmdev_talks
@@dmdev хм , но ответ получился как у вас. Посмотрю конечно ещё раз... но проверял по строкам
У меня тоже такое было. Это случилось из-за того при введении параметров в функцию я написал int sourceSam. В итоге исправил на double sourceSam и получилось все как нужно
13:00 Решение Дениса.
Моё решение:
private static int getSumDigits(int number) {
int result = 0;
int digit = 1;
int divider = 1;
int countDigit = getDigitsCount(number);
while (digit
Ну, ничего страшного. Более компактные решения приходят с опытом. Тут главное продолжать и не останавливаться!
Можно по 2 задачке еще вопрос? Сначала мы забрали 5 как остаток от деления, ок. А как тогда у нас потом останется 1234 а не 12345 ??? Как Идея забирает эту 5ку и оставляет 1234 ??? Уже дебагером посмотрел, да отнимает но каким образом. Сколько не отнимай все равно текущее число останется текущим и как забирается одна последняя цифра непонятно))
Привет!
Когда ты делишь целое число на 10 - то как раз и отбрасывается последнее число:
12345 / 10 = 1234;
Главное не забыть сохранить это новое число 1234 - в переменную
в 4 задаче не обязательно проходить циклом до value, достаточно до value/2
Алгоритмическую сложность алгоритма это не меняет.
Поэтому не критично, но довольно неплохо подмечено!
НЕ очень понял в задании № 2, while (currentValue != 0) почему именно так работает, а не == 0 например
Цикл работает ДО ТЕХ ПОР ПОКА currentValue != 0. Если мы сделаем ДО ТЕХ ПОР ПОКА currentValue == 0 - то даже не зайдем в цикл, потому что currentValue - это какое-то положительное число и мы его просто делим на 10 в теле цикла, чтобы рано или поздно currentValue не стало 0 и мы вышли из цикла.
@@dmdev т.е. надо выйти из цикла до того как currentValue станет 0. Оно и получается != 0. А почему с 0 не прокатит) ладно. Спасибо тебе большое !
@@Prady_sh совсем скоро ты дойдёшь до дебага - обязательно дебажь программы, чтобы разобраться!
@@dmdev Надеюсь я найду ответ для себя и в моей голове все уляжется ) а тебе ещё раз спасибо!
@@Prady_sh Найдешь, это буквально предпоследнее видео в этом плейлисте! Всегда пожалуйста
Денис, а почему ты методы называешь функциями ? В книгах больше упор делают на методы, а функции типо С+. Спасибо за ответ.
Я это буду объяснять в playlist Level 2, практически в самом начале :)
@@dmdev понял :)) нужно изучить весь канал и после задавать вопросы ... :) поехал дальше
Не обязательно. Если вопрос касается конкретно этой темы, то почему бы и не спросить)
Но большинство твоих вопросов да, закроются сами по себе во время просмотра всех видео на моем канале
считаю ошибкой в Task 3 каждый раз в цикле for объявлять double переменную percent
Upd: и зачем в 18 строчке передаешь значение переменной SourceSum в переменную result?зачем эти лишние телодвижения?
Почему ты считаешь это ошибкой?
Порой делают переменные с хорошим названием, чтобы код читался лучше, а не просто в одну строку записывают сложное выражение.
Переменная result создана потому, что плохо менять параметры функции. Я в видео говорил (возможно не в этом), что правило хорошего тона - это неизменяемые параметры функции
А сильно плохо, что я пока не могу решить задачи, что ты решаешь в этом видео. У меня логики не хватает как это посчитать / записать
Все ок. В последнем видео этого курса я расскажу, как научиться решать также
@@dmdev Понял, спасибо.
1 * 1 понятно. А где берется 2 * 2 и так далее ?
Это ты о какой задаче спрашиваешь?
@@dmdev первая. Где вы вне цикла объявили переменную result. Не понятен алгоритм с ней после
Спасибо, крутой контент
На счёт звука все хорошо
Может быть лучше, но и так нормально)👍🏻👍🏻
Можно ваши соцсети?
telegram: t.me/joinchat/ElmRuxSedfMEKnW-sLqY_w
лучшее - враг хорошего)
Также не успеваю за мыслями автора. Сложно)
Но через терни к звёздам как говорится.
Можно по подробней про момент с определением переменной results. Не могу сопоставить её с циклом for. За счёт чего получается это последовательное умножение…
Мы присвоили result = 1 перед циклом
а потом в цикле умножаем ее:
- сначала на единицу: 1 * 1 = 1
- потом предыдущий результат умножаем на 2: 1 * 2 = 2
- потом предыдущий результат умножаем на 3: 2 * 3 = 6
- потом предыдущий результат умножаем на 4: 6 * 4 = 24
И т.д.
Что именно было не понятно здесь?
@@dmdev Не понятно как происходит действие умножения предыдущего результата на будущее число. Если переменная резулт остаётся не изменной. Что то я запутался.
@@dmdev мне видится, что на каждый из множетелей, мы умножаем 1
1 * 2
1 * 3
1 * 4...
и не могу понять почему это не так.
@@dmdev цикл for крутится инкрементируя каждый раз на 1 единицу больше, и резулт*=i я вижу как умножение
1*1
1*2
1*3
как в цикл попадает тот самый предыдущий результат ?
@@ErikErik-ck9hw она изменяется постоянно в цикле, используется же оператор присваивания = (result *= i, или как я показывал в видео result = result * i).
Почему ты решил, что result неизменный?
задача с char так тяжело заходила, что пришлось развернуть ее в XLS и пальчиком считать клеточки с алфавитом)
ого, серьезно подошел к задаче!
освежаю память, совсем забыла про char) пришлось ещё и загуглить почему у меня char не прибавляется. В итоге вот:
char a = 'a';
a = a++; // этот способ не работает из-за неявного сужающего преобразования.
char b = 'a';
b++;
char c = 'a';
c = (char) (c + 1);
char d = 'a';
d += 1;
блин я все это уже давно прошел и в целом по jave ничего нового, и задачки вроде легенькие, а всеравно пришлось запарится чутка)
Значит развиваешься)
Когда все просто - то такие задачи бессмысленны!
Разве цикл isSimple правильный?
15, например, не делится без остатка на 2, но это не простое число, оно делится на 5.
PS: До меня дошло, там "if" :D
Хорошо, что разобрались)
ПРОСТИ!!)) но я совсем могу понять!
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;
Не совсем. Просто в цикле for третья часть, где происходит изменение (currentValue /= 10) - не выполняется при первой итерации. Поэтому обе записи эквивалентны
@@dmdev где можно почитать/посмотреть как выполняются итерации. Что бы понять как это все работает. Спасг
@@Prady_sh в цикле for - первая инциализационная часть выполняется только в первую итерацию. Вторая условная часть выполняется всегда. Третья часть изменения - выполняется как будто после тела цикла, поэтому кажется, что она пропускается в первой итерации. Все как с циклом while, поэтому я и писал аналог его. В последнем видео этого плейлиста я скажу где что почитать можно
@@dmdev 👍🏻
@@dmdev отлично, спасибо, нашёл эту инфу и закрепил. Теперь понял ))) спасибо!
на видео с практикой совершенно не понимаю логики даже с объяснениями автора. Как уже писали некоторые комментаторы, не покидает чувство собственной неполноценности(
Все испытывали такое чувство, когда начинали программировать. Поэтому, лучше сразу оставь его, чтобы не мешал изучать Java.
На предпоследнем видео я покажу debug - вот его очень советую использовать, чтобы пошагово разбираться в готовых решения, а потом при написании своих
тут вобще тихо, может стоит даже перезалить, я на максимум выкрутил громкость и то не сильно громко стало. для долгосрочной перспективы нужно до ума довести )
Не сказал бы, что прям тихо, но да, тише, чем в последних видео. Спасибо!
6 миллиардов за Манхэттен - это копейки и обман.
Кроме того, индейцам никогда бы не отдали их деньги, если бы те положили их в банк.
Согласен, нет в этом мире справедливости)
Вроде все понимаю,но так как мне 15 лет иногда не понятно) (либо это я дурачок :) )
Ничего страшного, больше практики и решения домашних заданий под видео - и все!
А это нормально, что я уже 2 дня в циклах разбираюсь, или я тупой ? ))))
2 дня по-твоему - это много?)
@@dmdev думал, да. До циклов как то прям все хорошо усваивалось. Циклы вынос в новую функцию, факториалы, потерялся. Т.е. если я застрял чуть чуть) это норм) таким трудом пробиваться )
@@Prady_sh да. Так частенько бывает. Рывками идет понимание. Сначала может быть быстро, потом застрял, потом вернулся назад, затем опять изучаешь новый материал
@@dmdev Понял, а то в такие моменты разные мысли лезут. Спасибо!
@@Prady_sh тут главное продолжать и не сдаваться. И успех неизбежен)
@em phantom, та же ерунда, вот что пишет: 'sum(int)' in 'com.dmdev.Task.Task3' cannot be applied to '(double)'. @dmdev Если можно поясните ситуацию.
ты используешь разные типы данных. Например, если функция принимает int, значит ты не можешь передавать туда double
Можно ли для второй задачи, для указания текущего года написать так: LocalDate.now().getYear() ?
Можно, почему нет?