package com.javarush.test.level14.lesson08.home07; import java.util.ArrayList; import java.util.List; /* Клининговый центр Клининговый центр 1. Реализовать метод cleanAllApartaments. Для каждого объекта из apartaments: 2. Для однокомнатных квартир (Apt1Room) вызвать метод clean1Room. т.е. если объект типа Apt1Room, то вызвать у него метод clean1Room. 3. Для двухкомнатных квартир (Apt2Room) вызвать метод clean2Rooms т.е. если объект типа Apt2Room, то вызвать у него метод clean2Rooms. 4. Для трехкомнатных квартир (Apt3Room) вызвать метод clean3Rooms т.е. если объект типа Apt3Room, то вызвать у него метод clean3Rooms. */ public class Solution { public static void main(String[] args) { List<Apartament> apartaments = new ArrayList<Apartament>(); apartaments.add(new Apt1Room()); apartaments.add(new Apt2Room()); apartaments.add(new Apt3Room()); cleanAllApartaments(apartaments); } public static void cleanAllApartaments(List<Apartament> apartaments) { //написать тут вашу реализацию пунктов 1-4 for (Apartament list : apartaments) { if (list instanceof Apt1Room) Apt1Room.clean1Room(); //проверка объекта, вызов метода в классе. if (list instanceof Apt2Room) Apt2Room.clean2Rooms(); if (list instanceof Apt3Room) Apt3Room.clean3Rooms(); } } static interface Apartament { } static class Apt1Room implements Apartament { static void clean1Room() //пришлось сделать static { System.out.println("1 room is cleaned"); } } static class Apt2Room implements Apartament { static void clean2Rooms() { System.out.println("2 rooms are cleaned"); } } static class Apt3Room implements Apartament { static void clean3Rooms() { System.out.println("3 rooms are cleaned"); } } }
в методе cleanAllApartaments добавил:
new Apt1Room().clean1Room();
new Apt2Room().clean2Rooms();
new Apt3Room().clean3Rooms();
все выводится корректно, а проверку не проходит, не могли бы Вы подсказать, в чем проблема?
Какой Вы хитрый. Создали комнаты и сразу их прибрали, чтоб не заморачиваться с определением, где чья комната.
Вы в методе cleanAllApartaments создаёте новые комнаты, а нужно убирать комнаты из списка apartaments (параметр list в методе). Для того, чтобы выяснить, с каким классом Вы имеете дело в очередном цикле итерации, используете instanceof.
Не хитрый, а глупый)) спасибо, разобрался, все получилось. В идее все нормально отработало, а вот валидатор на JavaRush ругается, точнее, все работает норм, но не пропускает:
-В методе cleanAllApartments для всех однокомнатных аппартаментов(Apt1Room) содержащихся в списке необходимо вызвать метод clean1Room.
-В методе cleanAllApartments для всех двухкомнатных аппартаментов(Apt2Room) содержащихся в списке необходимо вызвать метод clean2Rooms.
-В методе cleanAllApartments для всех трехкомнатных аппартаментов(Apt3Room) содержащихся в списке необходимо вызвать метод clean3Rooms.