undefined

Задачи на время жизни объекта

Java Syntax
6 уровень , 5 лекция
Открыта

— Привет, Амиго! Вот тебе пара задачек:

undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Метод finalize класса Cat
Случайно потерять объект сложно: пока у вас есть на него хотя бы одна ссылка, это значит, что он жив. Но если нет… Тогда к объекту приходит метод finalize, этот непредсказуемый ассасин, состоящий на службе у Java-машины. Давайте создадим такой же метод сами: protected void finalize() throws Throwable. Последние два слова станут понятны чуть позднее.
undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Пустые кошки, пустые псы
Минутка деструктива на JavaRush. На предыдущем уровне мы часто «конструировали» котов и псов (конструкторы для классов Cat и Dog) и создавали новых конкретных котов и псов (объекты). Теперь пришло время уничтожения объектов, на которые никто не ссылается. В классах Cat и Dog пишем метод finalize, который выводит на экран текст об уничтожении объектов.
undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
По 50 000 объектов Cat и Dog
Если вы еще не прониклись прелестью циклов в программировании, можете попробовать решить эту самую задачу без них. Хотя тут речь не столько о циклах, сколько об уничтожении незадействованных объектов. Итак, создайте в цикле по 50 000 объектов Cat и Dog. Этим действием мы провоцируем Java-машину вызвать хотя бы разочек метод finalize.
undefined
2
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Ставим котов на счётчик
Во Вселенной есть баланс, где-то прибудет, где-то убудет. В нашей галактике прокатывает точно не знать, где и что, но вот в компьютере с его дискретной памятью так не получится. Поэтому в этой программе нужно отредактировать пару важных вещей. В конструкторе класса Cat мы будем увеличивать счётчик на 1, а в методе finalize — уменьшать.
undefined
10
Задача
Java Syntax,  6 уровень,  5 лекция
Недоступна
Чётные и нечётные циферки
Давайте определим, сколько четных цифр, а сколько нечетных в числе, введенном с клавиатуры. Если число делится без остатка на 2 (т. е. остаток равен нулю), значит оно четное. Увеличиваем на 1 счетчик четных цифр (статическая переменная even). Иначе число нечетное, увеличиваем счетчик нечетных цифр (статическая переменная odd).
Комментарии (671)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Николай 6 уровень, Москва
24 февраля 2021
"Чётные и нечётные циферки": Строка - это массив символов (char). У класса String есть статический метод toCharArray. Можно просто пройтись в цикле по массиву полученных символов из строки и попробовать вычислить остаток. Надеюсь я не первый кто об этом пишет.
Svitlana 6 уровень
24 февраля 2021
Поскольку надо определить сколько четных и нечетных цифр в числе, мы можем в цикле уменьшать число в 10 раз и проверять каждый раз четное ли число. Если четное, значит и последняя цифра четная и наоборот. Добавляем в счетчик.
Boris Gretskis 6 уровень, Могилев
20 февраля 2021
1. нашел количество символов строки = length 2. перевел в число 3. условие больше 0 4. цикл (от 0 до length){ проверка на остаток %2 если 0 то even+=1; иначе odd+=1; 5. приравниваем числу = число минус последний символ(парсим и substring) 6. вывод строки типа "Even: "+ even + " Odd: "+ odd все отрабатывает. а валидация все кроме считывания с клавиатуры минусы(типа Убедись, что количество нечетных цифр сохраняется в переменную odd, Программа должна выводить текст на экран.)WHY???
Андрей 11 уровень
5 февраля 2021
Способы найти количество цифр в числе: https://habr.com/ru/post/269237/
Andrew 19 уровень, Санкт-Петербург
29 января 2021
Я просто оставлю это здесь! Не реклама, не спам! Все в порядке, просто Вова Калюта в глаза попал... 😭 https://www.youtube.com/watch?v=3TvB_9Dcig0 Подпись... Андрей, 31 год.
Gaziz 19 уровень, Уфа
8 января 2021
Просидел пол часа потому что не посмотрел что переменные уже объявлены.
Kairat 8 уровень
7 января 2021
решил задачу "Hard", через массивы. посмотрел правильное решение, понял что я дурак.
Alleviata 8 уровень, Киев
1 января 2021
Привет! Поскольку мы определяем четность каждой цифры, полезно знать следующее: 1) Строку можно разбить на массив подстрок (или массив символов char если хотите так). Массив - это как шкафчики в камере хранения, у каждого свой номер и в каждом лежит переменная одинакового типа. Мы можем открыть любой шкафчик, зная его номер и посмотреть что там внутри. Для этого у переменной Стринг есть метод Сплит, мы вызываем его и в скобках передаем просто кавычки, чтоб отдельно сохранить каждй символ строки, а если в скобках передать другой символ (двоеточие, пробел и т.д.), то строку разобьют по нему:

 String s = reader.readLine();
        String[] arr = s.split("");
2) Теперь когда у нас вместо большого числа одной строкой есть массив символов (в нашем случае это цифры), которые мы храним в типе Стринг, можно их запустить в цикл, распарсить каждую как целое число и определить делится ли оно на два без остатка. Цикл будем повторять столько раз, сколько есть в массиве "ячеек". Поскольку размер массива (т.е. количество ячеек в нем) определяется в момент создания и изменить его нельзя (можно в объекте типа ArrayList, но не в обычном массиве), то и метода size() в нем нет. Размер массива узнаем по схеме имя массива+точка+length без скобок, т.к. это не метод.

       for (int i = 0; i<arr.length;i++){
            int k = Integer.parseInt(arr[i]); //и дальше запустим проверку на четность и увеличиваем соответствующую static переменную
Надеюсь это было полезно, всем добра, интересных задач и нетривиальных решений, на досуге советую почитать и про другие способы разбить строку: https://www.codespeedy.com/break-a-string-into-characters-in-java/
Burnoutman 7 уровень, Минск
23 декабря 2020
Андрей 8 уровень, Москва
22 декабря 2020
А я что-то замудрил! Разбил входящее число на отдельные цифры и каждую проверил...