Солнце встает. Задачи всё сложнее: изучаем static’и. В этот раз нам нужно в классе Cat создать статическую переменную catCount и конструктор [public Cat()].Пусть при каждом создании кота (нового объекта Cat) статическая переменная catCount увеличивается на 1. Нам нужно создать десяток котов и вывести значение переменной catCount на экран.
Кот и статика
- 5
Недоступна
Комментарии (134)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Анастасия
25 ноября 2022, 00:25
В Solution : цикл for (...){new Cat();} Выдаем значение переменной catCount ссылаясь на класс
В классе Cat : создаем статическую переменную public int catCount (СТАТИЧЕСКАЯ!), затем создаем конструктор public Cat() без параметров (вот как написано, так и создаем!){catCount++;}
Накидайте "+" ❤️ для ачивки
+1
Александр
3 февраля 2022, 20:41
счетчик показывает 1, если использовать такую конструкцию:
хотя создано 10 котиков 0
Ivy
30 ноября 2021, 10:54
Проканало с созданием 10 раз одного и того-же кота))
for (int i = 0 ; i < 10; i++){
Cat cat = new Cat();
}
0
Вячеслав
31 октября 2022, 18:35
Сделал просто new Cat(), тоже прокатило.
0
YesOn
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.
0
YesOn
25 октября 2021, 00:15
2. Да, статическая переменная по умолчанию равна 0, ей не обязательно присваивать 0, прописывая это в коде. Зачем это написано в "правильном решении" не знаю, это странно. В комментариях тоже встречал пару раз люди писали раньше вопрос о том, "разве статическая переменная по умолчанию не равна 0?". Я уже думал, мне это показалось, при прочтении статей😁
Рад, если кому-то помогут эти мысли на пути к правильному решению.
0
Neonila Kravtcova
11 ноября 2021, 15:05
Сделала для себя через цикл, имена создаю в цикле через StringBuilder, в Idea всё отлично работает. Но даже не пыталась пропускать это через валидатор. Для него, по-старинке: 10 объектов - 10 строк кода ))
0
Михаил
25 февраля 2021, 18:37
Ребят подскажите , почему вывод через Cat.catCount,почемуcatCount не работает ?
0
Андрей Смирнов
1 марта 2021, 15:12
Уровень 6, Лекция 6: Статические же переменные – существуют в одном экземпляре, и обращаться к ним нужно по имени класса (внутри класса к статической переменной можно обращаться просто по имени):
0
YesOn
24 октября 2021, 23:56
Очень полезное напоминание, заставляет заглянуть в лекции и ещё раз обратить внимание на тот момент, что по имени к статической переменной catCount можно обратиться ТОЛЬКО внутри класса, в котором она инициализирована. За пределами класса, например в методе main класса Solution к статической переменной нужно обращаться по имени класса Cat.catCount, что выглядит довольно логично теперь, особенно после решения этой задачи.
0
Rodion
27 января 2021, 20:48
Вывод через Cat.catCount
+2
Alexander
5 января 2021, 16:46
Для тех, кто любит надумывать много ненужного и усложнять задачу на пустом месте (как я): геттеры и сеттеры тут не нужны 😅
0
Super Style
20 декабря 2020, 09:22
во тупой, забыл переменную сделать статичной и пол дня пытался ее вызвать. не делайте так.
+8
Anonymous #1396846
7 января 2022, 21:07
Благодарю! Теперь понял свою ошибку
👌
0
Павел
11 декабря 2020, 08:59
Не забываем переменной и конструктору модификатор PUBLIC поставить!!!!
0
Евгения
3 декабря 2020, 14:04
1). создаем переменную в классе Cat (не забываем что переменная static)
2). в этом же классе создаем конструктор и запускаем там счетчик котов(через ++)
3). создаем в мэйне 10 котов
4). после котов выводим Cat.catCount
Все проще чем казалось😋
+8
Иван
16 января 2021, 06:59
4). Выводим, то есть в System.out.println(Cat.catCount);
Cat.catCount - с большой буквы, так как статическая переменная, сначала пишем название класса, с большой буквы, точку и название переменной.
0