JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Подскажите, где ошибка, плз.
Дмитрий Ковтонюк
19 уровень
  • 14.05.2018
  • 2916просмотров
  • 13комментариев

Подскажите, где ошибка, плз.

Вопрос по задаче Множество всех животных
Java Syntax,  8 уровень,  11 лекция
Решен

1. Внутри класса Solution создать public static классы Cat, Dog без конструктора или с конструктором без параметров.
2. Реализовать метод createCats, который должен возвращать множество с 4 котами.
3. Реализовать метод createDogs, который должен возвращать множество с 3 собаками.
4. Реализовать метод join, который должен возвращать объединенное множество всех животных - всех котов и собак.
5. Реализовать метод removeCats, который должен удалять из множества pets всех котов, которые есть в множестве cats.
6. Реализовать метод printPets, который должен выводить на экран всех животных, которые в нем есть.
Каждое животное с новой строки.

Требования:
  • Программа должна выводить текст на экран.
  • Внутри класса Solution должны быть созданы public static классы Cat, Dog.
  • Метод createCats() класса Solution должен возвращать множество (Set) содержащее 4 кота.
  • Метод createDogs() класса Solution должен возвращать множество (Set) содержащее 3 собаки.
  • Метод join() класса Solution должен возвращать объединенное множество всех животных - всех котов и собак.
  • Метод removeCats() должен удалять из множества pets всех котов, которые есть в множестве cats.
  • Метод printPets() должен выводить на экран всех животных, которые в нем есть. Каждое животное с новой строки.
....
package com.javarush.task.task08.task0820; import java.util.HashSet; import java.util.Set; import java.util.ArrayList; /* Множество всех животных */ public class Solution { public static void main(String[] args) { Set<Cat> cats = createCats(); Set<Dog> dogs = createDogs(); Set<Object> pets = join(cats, dogs); printPets(pets); removeCats(pets, cats); printPets(pets); } public static class Cat{ private String name; public Cat(String name) { this.name = name; } } public static class Dog{ private String name; public Dog(String name) { this.name = name; } } public static Set<Cat> createCats() { HashSet<Cat> cats = new HashSet<Cat>(); for(int i = 0; i <4; i++) { cats.add(new Cat("murka"+i));} //напишите тут ваш код return cats; } public static Set<Dog> createDogs() { HashSet<Dog> dogs = new HashSet<Dog>(); for(int i = 0; i <3; i++){ dogs.add(new Dog("dog"+i)); }//напишите тут ваш код return dogs; } public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) { HashSet<Object> join = new HashSet<Object>(); //напишите тут ваш код join.addAll(cats); join.addAll(dogs); return join; } public static void removeCats(Set<Object> pets, Set<Cat> cats) { ArrayList<Object> list = new ArrayList<>(); list.addAll(pets); for(int i =0; i < list.size(); i++){ for(Cat clist : cats){ if(cats.contains(list.get(i))) { pets.remove(list.get(i));} } } //напишите тут ваш код } public static void printPets(Set<Object> pets) { ArrayList<Object> list = new ArrayList<>(); list.addAll(pets); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }//напишите тут ваш код } //напишите тут ваш код }
0
Комментарии (13)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 12:29
com/javarush/task/task08/task0820/Solution.java:22: error: cannot find symbol public static Set<Cat> createCats() { ^ symbol: class Cat location: class com.javarush.task.task08.task0820.Solution com/javarush/task/task08/task0820/Solution.java:32: error: cannot find symbol public static Set<Dog> createDogs() { ^ symbol: class Dog location: class com.javarush.task.task08.task0820.Solution com/javarush/task/task08/task0820/Solution.java:40: error: cannot find symbol public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) { ^ symbol: class Cat location: class com.javarush.task.task08.task0820.Solution com/javarush/task/task08/task0820/Solution.java:40: error: cannot find symbol public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) { ^ symbol: class Dog location: class com.javarush.task.task08.task0820.Solution com/javarush/task/task08/task0820/Solution.java:45: error: cannot find symbol public static void removeCats(Set<Object> pets, Set<Cat> cats) { ^ symbol: class Cat location: class com.javarush.task.task08.task0820.Solution
0
--------
Уровень 40
Master
14 мая 2018, 13:01
А где у тебя эти классы созданы? Внутри класса Solution создать public static классы Cat, Dog.
+1
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 13:43
package com.javarush.task.task08.task0820;

import java.util.HashSet;
import java.util.Set;
import java.util.ArrayList;

/*
Множество всех животных
*/

public class Solution {
    public static void main(String[] args) {
        Set<Cat> cats = createCats();
        Set<Dog> dogs = createDogs();

        Set<Object> pets = join(cats, dogs);
        printPets(pets);

        removeCats(pets, cats);
        printPets(pets);
    }

    public static class Cat{
        private String name;
        public Cat(String name) { this.name = name; }
    }

    public static class Dog{
        private String name;
        public Dog(String name) { this.name = name; }
    }

    public static Set<Cat> createCats() {
        HashSet<Cat> cats = new HashSet<Cat>();
        for(int i = 0; i <4; i++)    {
            cats.add(new Cat("murka"+i));}
        //напишите тут ваш код

        return cats;
    }

    public static Set<Dog> createDogs() {
       HashSet<Dog> dogs = new HashSet<Dog>();
       for(int i = 0; i <3; i++){
    dogs.add(new Dog("dog"+i));
}//напишите тут ваш код
        return dogs;
    }

    public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) {
       Set<Object> join = new Set<Object>(cats.addAll(), dogs.addAll()); //напишите тут ваш код
        return join;
    }

    public static void removeCats(Set<Object> pets, Set<Cat> cats) {
       ArrayList<Object> list = new ArrayList<>(cats.addAll());
       Cat s = null;
       for(int i =0; i < list.size(); i++){
           Object n = list.get(i);
       for(HashSet<Object> alist : pets){

           if(alist.contains(n)) { remove.pets(alist); }
       }
       }
       //напишите тут ваш код
    }

    public static void printPets(Set<Object> pets) {
        for (HashSet<Object> blist : pets ) {
0
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 13:49
создал классы. com/javarush/task/task08/task0820/Solution.java:51: error: no suitable method found for addAll(no arguments) Set<Object> join = new Set<Object>(cats.addAll(), dogs.addAll()); //напишите тут ваш код ^ method java.util.Collection.addAll(java.util.Collection<? extends com.javarush.task.task08.task0820.Solution.Cat>) is not applicable (actual and formal argument lists differ in length) method java.util.Set.addAll(java.util.Collection<? extends com.javarush.task.task08.task0820.Solution.Cat>) is not applicable (actual and formal argument lists differ in length) com/javarush/task/task08/task0820/Solution.java:51: error: no suitable method found for addAll(no arguments) Set<Object> join = new Set<Object>(cats.addAll(), dogs.addAll()); //напишите тут ваш код ^ method java.util.Collection.addAll(java.util.Collection<? extends com.javarush.task.task08.task0820.Solution.Dog>) is not applicable (actual and formal argument lists differ in length) method java.util.Set.addAll(java.util.Collection<? extends com.javarush.task.task08.task0820.Solution.Dog>) is not applicable (actual and formal argument lists differ in length) com/javarush/task/task08/task0820/Solution.java:51: error: java.util.Set is abstract; cannot be instantiated Set<Object> join = new Set<Object>(cats.addAll(), dogs.addAll()); //напишите тут ваш код ^ com/javarush/task/task08/task0820/Solution.java:56: error: no suitable method found for addAll(no arguments) ArrayList<Object> list = new ArrayList<>(cats.addAll()); ^
0
--------
Уровень 40
Master
14 мая 2018, 13:54полезный
set.addAll(Collection c) - метод, добавляющий в вызывающее множество (в моем примере - в set) все объекты из передаваемой в виде параметра коллекции. Метода без параметра, т.е. addAll() просто не существует - что такой метод мог бы добавлять? И зачем вообще он у тебя вызывается во всех этих случаях, что он должен добавлять в dogs или cats?
+1
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 14:30
public static void removeCats(Set<Object> pets, Set<Cat> cats) {
       ArrayList<Object> list = new ArrayList<>();
       list.addAll(pets);
       HashSet<Object> acats = new HashSet<Object>();
       acats.addAll(cats);

       for(int i =0; i < list.size(); i++){
           //Object n = list.get(i);
       for(HashSet<Object> clist : acats){

           if(list.get(i).contains(acats)) { pets.remove(acats); i--;}
       }
       }
       //напишите тут ваш код
    }

    public static void printPets(Set<Object> pets) {
        HashSet<Object> set1 = new HashSet<Object>(); set1.addAll(pets);
        for (HashSet<Object> blist : set1 ) {
            System.out.println(blist);
        }//напишите тут ваш код
    }
0
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 14:30
com/javarush/task/task08/task0820/Solution.java:65: error: incompatible types: java.lang.Object cannot be converted to java.util.HashSet<java.lang.Object> for(HashSet<Object> clist : acats){ ^ com/javarush/task/task08/task0820/Solution.java:67: error: cannot find symbol if(list.get(i).contains(acats)) { pets.remove(acats); i--;} ^ symbol: method contains(java.util.HashSet<java.lang.Object>) location: class java.lang.Object com/javarush/task/task08/task0820/Solution.java:75: error: incompatible types: java.lang.Object cannot be converted to java.util.HashSet<java.lang.Object> for (HashSet<Object> blist : set1 ) { ^
0
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 14:46
Сделал, как вы сказали с add.All(). Теперь ошибка указывает на методы remove и print. Я обновил код в постановке задачи сверху.
0
--------
Уровень 40
Master
14 мая 2018, 14:48полезный
for(HashSet<Object> clist : acats){
"Для каждого clist - множества объектов, содержащегося в коллекции acats" - т.е. acats - это коллекция множеств (HashSet)?
if(list.get(i).contains(acats)) { pets.remove(acats); i--;}
"Если элемент списка list под индексом i содержит acats, удалить acats из pets". Или все же элемент списка должен содержаться в коллекции, а не коллекция в элементе?
for (HashSet<Object> blist : set1 ) {
См. выше, set1 - коллекция из HashSet<Object> ?
+1
Дмитрий Ковтонюк
Уровень 19
14 мая 2018, 16:18
скомпилировалась первый раз. поменял типы в циклах. решение обновил в топе.
0
Roman Java Developer Expert
15 мая 2018, 08:30решение
Избавься от конструкторов.
+2
Дмитрий Ковтонюк
Уровень 19
15 мая 2018, 15:18
Создать 2 пустых класса, создать в методах create обьекты и внести их в set?
0
Дмитрий Ковтонюк
Уровень 19
15 мая 2018, 15:20
Сделал, но только почему эти классы нужно указывать снизу?
+1
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush