package com.javarush.task.task06.task0614;
/*1. В классе Cat добавь публичную статическую переменную cats (ArrayList<Cat>).
2. Пусть при каждом создании кота (нового объекта Cat) в переменную cats добавляется этот новый кот.
Создать 10 объектов Cat.
3. Метод printCats должен выводить всех котов на экран. Нужно использовать переменную cats.*/
import java.util.ArrayList;
public class Cat {
public static ArrayList<Cat> cats;
public Cat() {
}
public static void main(String[] args) {
ArrayList<Cat> cats = new ArrayList<>();
for (int i = 0; i < 10; i++) {
cats.add(new Cat());
}
printCats();
}
public static printCats() {
for (int i = 0; i < cats.size(); i++) {
System.out.println(cats);
}
}
}Juris
9 уровень
Что у меня не так в данном коде. Почему у меня не работает метод printCats() ?
Архивный
Комментарии (14)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
y-grek
10 декабря 2018, 18:58
я так понимаю, что уже не актуально..
но в первую очередь ошибка должна была быть в
System.out.println(cats);
поскольку цикл выводил 10 раз всю переменную типа АррайЛист, а не 10 котов
0
Juris
10 декабря 2018, 20:58
хмммм .... как только при объявлении переменной она была также проинициализирована, то и вся ошибка в исключении пропала, если вы о том, я о 10й строке
0
y-grek
10 декабря 2018, 23:39
нет, я об этом
0
Juris
10 декабря 2018, 23:58
нет, данный метод скармливается printCats();
0
y-grek
12 декабря 2018, 17:34
возможно мы неправильно друг друга поняли..
я имел ввиду, что твой метод принтКетс() имеет цикл из, в этом случае, 10ти итераций
в каждой итерации систем.аут.принтлн() выводит не элемент из списка (например кетс.гет(i) ), а всю переменную кетс.. и так 10 раз
0
Juris
12 декабря 2018, 21:35
хех, проверь ещё раз, что выводит этот println, по моему то что нужно, потому как все коты находятся в cats .... а они как раз там, откуда и выводим через функцию printCats()
0
y-grek
16 декабря 2018, 13:14
извини, что до сих пор дергаю.. но хочу уже для себя разобраться.. в аррайлисте кетс после ввода находится 10 элементов - 10 объектов типа Кэт.. метод принткетс() у тебя 10 раз выводит не элемент аррайлиста кетс, а весь лист, и делает это 10 раз..
если я правильно понимаю у тебя 10 раз по 10 котов (их хешей) выведется
0
Juris
16 декабря 2018, 13:43
согласен, тут ошибка
правильный вывод на экран вот такой:
Вот тут как раз и виден вывод 1 раз с индивидиуальным адресом объекта в каждой строке
+1
Juris
16 декабря 2018, 13:57
но это была не критичная ошибка, так на это ругается лишь валидатор, а тут были проблемы с компилятором
+1
Игорь
8 декабря 2018, 17:14
Удачи!
0
Juris
10 декабря 2018, 20:58
спасибо, взаимно!
0
Juris
8 декабря 2018, 16:57
Спасибо - действительно эта "пара мелочей" загнала в меня в ступор. Надеюсь, что в дальнейшем не буду наступать на похожие грабли
Теперь вижу, что Java выкидывает NullException если что-то такое не инициализировано.
0
Игорь
8 декабря 2018, 16:47решение
И ещё у вас коллекция пустая получается. Я строку 10 написал вот так
А строку 17 не использовал.
+2
Игорь
8 декабря 2018, 16:37решение
В строке 24 нужно добавить void. Метод ничего не возвращает, поэтому void.
+1