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.