Статические коты

  • 4
  • Недоступна
Статический кот — всем котам кот. Поэтому в этой задаче в классе Cat добавляем статическую переменную cats. Пусть при каждом создании кота (нового объекта Cat) в переменную cats добавляется этот новый кот. Нам нужно создать 10 объектов Cat, а затем метод printCats должен выводить всех котов на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (200)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Olga Enaldieva11 уровень
позавчера, 12:24
Абсолютно глупое задание. Валидатор принимает решение, только если ты вручную добавляешь все объекты в список. Вместо этого в конструкторе было бы достаточно прописать:
cats.add(this);
Александр8 уровень, Санкт-Петербург
4 июня, 12:01
Подсказки для тех кому тяжко;) - используйте cats.size() для цикла for, чтобы прогнать всех котов - используйте cats.get(i), чтобы вывести каждого на экран
Иван8 уровень
2 июня, 19:24
Решил задачу со второй попытки, но честно говоря не совсем понял задание. ArrayList еще не изучали. Кроме того не понял последний пункт задания: "Метод printCats должен выводить всех котов из переменной cats на экран. Каждого с новой строки.". Что именно надо выводить на экран? Конструктор же не содержит переменных?
Иван Горбатов11 уровень
6 июня, 08:13
Объект
Derp 9 уровень, Санкт-Петербург
30 мая, 17:23
Задача "Вперед паравоза", если хотите решить в актуале - изучите Java массивы и списки массивов, либо пройдите несколько лекций и вам всё сразу станет понятно ;)
николай Наумов11 уровень, Москва
27 мая, 13:09
возможно получить ссылку на объект в его методе, например в конструкторе чтобы в нем выполнить cats.add(...);
KarlNogebator13 уровень, Москва
15 мая, 14:46
В мэйне надо сделать cats.add(new Cat()) - 10 раз ессно. Конструктор Cat вообще не трогать. Тогда не будет ругаться, что создаем не в main. Сам бился над этим.
Дмитрий9 уровень
29 мая, 08:58
лучше это делать в цикле for
9 июня, 08:28
Тоже попался на этом. По сути просто невнимательно читал условие. Но, с другой стороны, такие штуки, как по мне, логичнее было бы в конструкторе прописывать.
Юра17 уровень, Киев
суббота, 10:58
Спасибо. А я усложнял себе жизнь, думал нужно просто создать обьекты (типа Cat cat5 = new Cat();) и чтоб они автоматически при создании добавлялись в массив.
Ivan8 уровень, Нижний Новгород
14 мая, 09:39
Уважаемые и дорогие, понимающие друзья. В моём коде всячески(т.е. по-любому, наверняка и стопудово) конструктор 10 котов создаёт, я даже добавил cats.size() для проверки в метод printCats(), чтобы видно было счётчик от 1 до 10... а валидатор по третьему пункту пишет, что требование о создании 10 (десяти) объектов не выполняется... я даже в конструктор имя котов добавил...что там в алгоритмах проверки... мне не ясно... буду пятую лекцию седьмого уровня читать, может, созреет ещё что-то...
Ivan8 уровень, Нижний Новгород
14 мая, 12:09
Переделал лапидарно, без циклов... Прошло проверку...
Дмитрий9 уровень
29 мая, 09:00
for (int i = 1; i <= 10; i++) Вот так работает и создаёт 10 котов
Александр9 уровень, Москва
3 мая, 20:19
Важный момент: при выводе обращаться к элементу массива не через квадратные скобки (это для примитивов), а через get! Кстати, в дальнейшем при работе с массивами этот момент надо держать всегда в голове, так как например сортировка массива с элементами-примитивами и элементами-объектами не одно и тоже
Александр12 уровень
23 мая, 16:36
Пожалуйста, обычный массив объектов Cat. Обращение происходит по индексу, также как и для примитивных типов.
Cat[] cats = new Cat[10];
cats[0] = new Cat();
System.out.println(cats[0]);
И для всех примитивных типов существуют классы-обертки, которые позволяют в ArrayList записывать и их, не только объекты. А алгоритмы сортировки работают одинаково для любых типов. Просто для классов нужно имплементировать интерфейс Comparable и реализовать метод compareTo().
GigaMax12 уровень
25 апреля, 18:18
В JavaRush есть статья на эту тему: Я понял, что надо так:
public static ArrayList<Cat> cats = new ArrayList<>(10);
Александр12 уровень
23 мая, 16:24
Не обязательно указывать размер (10). Это динамически расширяющийся массив, он устанавливает размер, к тому же 10 - это стандартное начальное значение)
GigaMax12 уровень
27 мая, 14:09
Александр, все верно! Не обязательно, но когда идет речь о больших размерах списочного массива, и Вы примерно знаете какие размеры, то лучше указывать размерность, в теории найдете ответ почему лучше так делать)
Евгений8 уровень, Оренбург
4 апреля, 16:58
пришлось загуглить: что за зверь такой - тип ArrayList ? http://developer.alexanderklimov.ru/android/java/arraylist.php нашёл, прочитал, проникся, написал... ... public static ArrayList<Cat> cats = new ArrayList<Cat>(); ... может кому поможет...
Valery Lvov8 уровень, Москва
23 апреля, 13:38
Непонятно про скобки < >. В https://javarush.ru/groups/posts/klass-arraylist описывается объявление cats иначе, просто
ArrayList cats = new ArrayList();
но в примерах сразу
ArrayList<Cat> cats = new ArrayList<>();
:((
Андрей10 уровень, Москва
15 мая, 11:20
в скобках указывается принадлежность к каком-то типу расширяемого массива (ArrayList) ArrayList<тип> ссылка = новый объект <тип>(); понял <тип> так: <Obj> = <Cat> (объект) <String> = <name> (строка) <Integer> = <age> (целое число) и т.д. ...