Кот и статика

  • 5
  • Недоступна
Солнце встает. Задачи всё сложнее: изучаем static’и. В этот раз нам нужно в классе Cat создать статическую переменную catCount и конструктор [public Cat()].Пусть при каждом создании кота (нового объекта Cat) статическая переменная catCount увеличивается на 1. Нам нужно создать десяток котов и вывести значение переменной catCount на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (132)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр
Уровень 8, Москва, Россия
3 февраля, 20:41
счетчик показывает 1, если использовать такую конструкцию:
Cat cat1, cat2, cat3, cat4, cat5, cat6, cat7, cat8, cat9, cat10 = new Cat();
хотя создано 10 котиков
Ivy
Уровень 22, Новосибирск
30 ноября 2021, 10:54
Проканало с созданием 10 раз одного и того-же кота)) for (int i = 0 ; i < 10; i++){ Cat cat = new Cat(); }
YesOn
Уровень 8, Томск, Россия
24 октября 2021, 23:42
Отвечу на пару вопросов, которые возможно будут мучать многих при решении этой задачи, также как и меня. 1. Если Вы решили сделать через цикл for, ещё до того, как заглянули в правильное решение, то да - это верный путь и такое решение пройдёт. НО обратите внимание, что sout на catCount нужно вынести за пределы цикла. Из-за этого, мне валидатор и IDE ругались на public static class Cat: "Выражение синтаксически не верное.". Именно на static ругались, а не на то, что sout в цикле. Это очень странное поведение IDE и валидатора на мой взгляд. Ну и что такого, что sout в цикле? Может я захотел, чтобы он мне 10 раз написал значение catCount? Из-за этого начал думать, что валидатор хочет, чтобы я создал 10 объектов с разными названиями переменных cat1,...cat10, а это было бы более громоздким решением и делать так не хотелось вовсе, когда уже умеешь через циклы решать задачи. Дополнение: Долбаный валидатор! Только что создал отдельный проект и проверил, будет ли идти ошибка при указании sout в цикле. И знаете что произошло? Ошибки не было никакой! IDE просто мне вывела значение счётчика по возрастанию от 1 до 10. Реально, раньше решал через сайт задачи и в IDE лезть пока с решением этих задач не хотел, так как был наслышан о глючности работы плагина и валидатора в IDE, к тому же казалось это неудобным при решении задач. А теперь я вообще утвердился в этом мнении. Чтобы всё было чётко, надо решать на сайте, а при возникновении таких неадекватных загонов от валидатора, создавать отдельный проект в IDE без привязки к задачам JAVARUSH и просто запускать код, смотреть, что напишет сама IDE.
YesOn
Уровень 8, Томск, Россия
25 октября 2021, 00:15
2. Да, статическая переменная по умолчанию равна 0, ей не обязательно присваивать 0, прописывая это в коде. Зачем это написано в "правильном решении" не знаю, это странно. В комментариях тоже встречал пару раз люди писали раньше вопрос о том, "разве статическая переменная по умолчанию не равна 0?". Я уже думал, мне это показалось, при прочтении статей😁 Рад, если кому-то помогут эти мысли на пути к правильному решению.
Neonila Kravtcova
Уровень 19, Санкт-Петербург, Россия
11 ноября 2021, 15:05
Сделала для себя через цикл, имена создаю в цикле через StringBuilder, в Idea всё отлично работает. Но даже не пыталась пропускать это через валидатор. Для него, по-старинке: 10 объектов - 10 строк кода ))
Михаил
Уровень 17, Санкт-Петербург, Россия
25 февраля 2021, 18:37
Ребят подскажите , почему вывод через Cat.catCount,почемуcatCount не работает ?
Андрей Смирнов
Уровень 22, Москва, Россия
1 марта 2021, 15:12
Уровень 6, Лекция 6: Статические же переменные – существуют в одном экземпляре, и обращаться к ним нужно по имени класса (внутри класса к статической переменной можно обращаться просто по имени):
YesOn
Уровень 8, Томск, Россия
24 октября 2021, 23:56
Очень полезное напоминание, заставляет заглянуть в лекции и ещё раз обратить внимание на тот момент, что по имени к статической переменной catCount можно обратиться ТОЛЬКО внутри класса, в котором она инициализирована. За пределами класса, например в методе main класса Solution к статической переменной нужно обращаться по имени класса Cat.catCount, что выглядит довольно логично теперь, особенно после решения этой задачи.
Rodion
Уровень 20, Munich, Germany
27 января 2021, 20:48
Вывод через Cat.catCount
Alexander
Уровень 19
5 января 2021, 16:46
Для тех, кто любит надумывать много ненужного и усложнять задачу на пустом месте (как я): геттеры и сеттеры тут не нужны 😅
Super Style
Уровень 7, Москва
20 декабря 2020, 09:22
во тупой, забыл переменную сделать статичной и пол дня пытался ее вызвать. не делайте так.
Anonymous #1396846
Уровень 20
7 января, 21:07
Благодарю! Теперь понял свою ошибку 👌
Павел
Уровень 23
11 декабря 2020, 08:59
Не забываем переменной и конструктору модификатор PUBLIC поставить!!!!
Евгения
Уровень 7, Калининград, Россия
3 декабря 2020, 14:04
1). создаем переменную в классе Cat (не забываем что переменная static) 2). в этом же классе создаем конструктор и запускаем там счетчик котов(через ++) 3). создаем в мэйне 10 котов 4). после котов выводим Cat.catCount Все проще чем казалось😋
Иван
Уровень 10, Хабаровск, Россия
16 января 2021, 06:59
4). Выводим, то есть в System.out.println(Cat.catCount); Cat.catCount - с большой буквы, так как статическая переменная, сначала пишем название класса, с большой буквы, точку и название переменной.
hidden #2399786
Уровень 7
4 ноября 2020, 18:23
Проглядел * Static. Будьте внимательны