Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 207
Записей в блоге: 28
1

Вводить ключи в цикле и создавать различные обьекты

20.02.2017, 19:18. Просмотров 1263. Ответов 4
Метки нет (Все метки)

Здравствуйте!Как решить такое задание?
User, Looser, Coder and Proger
1. Ввести [в цикле] с клавиатуры несколько строк (ключей).
Строки(ключи) могут быть такими: «user«, «loser«, «coder«, «proger«.
Ввод окончен, когда строка не совпадает ни с одной из выше указанных.

2. Для каждой введенной строки нужно:
2.1. Создать соответствующий объект [см. Person.java], например, для строки «user» нужно создать объект класса User.
2.2. Передать этот объект в метод doWork.

3. Написать реализацию метода doWork, который:
3.1. Вызывает метод live() у переданного обекта, если этот объект (person) имеет тип User.
3.2. Вызывает метод doNothing(), если person имеет тип Loser.
3.3. Вызывает метод coding(), если person имеет тип Coder.
3.4. Вызывает метод enjoy(), если person имеет тип Proger.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//Solution.java
public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Person person = null;
        String key = null;
 
        //тут цикл по чтению ключей, пункт 1
        key=reader.readLine();
        while(true)
        {
            key=reader.readLine();
            //создаем объект, пункт 2
 
            if (key.equals("user")) {
                person =new Person.User();
                doWork(person); //вызываем doWork
 
            } else if (key.equals("loser")) {
                person=new Person.Loser();
                doWork(person); //вызываем doWork
                } else if (key.equals("coder")) {
                person=new Person.Coder();
                doWork(person); //вызываем doWork
            } else if (key.equals("proger")) {
                person=new Person.Proger();
                doWork(person); //вызываем doWork
            }
            if(!key.equals("user") && !key.equals("loser")&& !key.equals("coder") && !key.equals("proger"))
                break;
            //doWork(person); //вызываем doWork
        }
    }
 
    public static void doWork(Person person) {
        // пункт 3
        if (person instanceof Person.User) {
            ((Person.User) person).live();
        }else if(person instanceof Person.Loser){
            ((Person.Loser) person).doNothing();
 
        } else if (person instanceof Person.Coder) {
            ((Person.Coder) person).coding();
        }else if(person instanceof Person.Proger){
            ((Person.Proger) person).enjoy();
 
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//Person.java
public interface Person {
    class User implements Person {
        void live() {
            System.out.println("Usually I just live.");
        }
    }
 
    class Loser implements Person {
        void doNothing() {
            System.out.println("Usually I do nothing.");
        }
    }
 
    class Coder implements Person {
        void coding() {
            System.out.println("Usually I create code.");
        }
    }
 
    class Proger implements Person {
        void enjoy() {
            System.out.println("Wonderful life!");
        }
    }
}
Валидатор выдает(+ прошло,- не прошло)
Bash
1
2
3
4
5
6
7
8
9
Метод main должен считывать строки с клавиатуры.(+)
Метод main должен прекращать считывать строки с клавиатуры, как только введенная строка не совпадает с одной из ожидаемых(user, looser, coder, proger).(-)
Для каждой корректной(user, loser, coder, proger) введенной строки должен быть вызван метод doWork с соответствующим объектом класса Person в качестве параметра.(-)
 
В классе Solution должен быть реализован метод doWork с одним параметром типа Person.(+)
Метод doWork должен вызывать метод live() у переданного объекта, если этот объект имеет тип User.(+)
Метод doWork должен вызывать метод doNothing() у переданного объекта, если этот объект имеет тип Loser.(+)
Метод doWork должен вызывать метод coding() у переданного объекта, если этот объект имеет тип Coder.(+)
Метод doWork должен вызывать метод enjoy() у переданного объекта, если этот объект имеет тип Proger.(+)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2017, 19:18
Ответы с готовыми решениями:

Как динамически создавать визуальные обьекты?
Как динамически создавать визуальные обьекты? Например radio button...

Можно ли в JAVA создавать классы и обьекты такие как в С++?
Можно ли в JAVA создавать классы и обьекты такие как в С++? Типа: class Class1 ...

Место в графическом окне, где можно рисовать и создавать обьекты
хочу чтобы в графическом окне было место ,где отображается все фигуры, линии и т.п . Как это...

Как вводить ключи к нелицензионной версии?
А есть какая то разница каким образом вводить ключи? а то видел что можно через cmd, через веб,...

4
2725 / 2342 / 720
Регистрация: 05.07.2013
Сообщений: 11,404
20.02.2017, 21:08 2
Цитата Сообщение от Konst2016 Посмотреть сообщение
public interface Person {
* * class User implements Person {
* * * * void live() {
* * * * * * System.out.println("Usually I just live.");
* * * * }
* * }
class Loser implements Person {
* * * * void doNothing() {
* * * * * * System.out.println("Usually I do nothing.");
* * * * }
* * }
class Coder implements Person {
* * * * void coding() {
* * * * * * System.out.println("Usually I create code.");
* * * * }
* * }
class Proger implements Person {
* * * * void enjoy() {
* * * * * * System.out.println("Wonderful life!");
* * * * }
* * }
}
че за изврат
0
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 207
Записей в блоге: 28
20.02.2017, 21:39  [ТС] 3
Такой код работает,но в валидаторе не полностью проходит.
0
153 / 145 / 46
Регистрация: 21.10.2016
Сообщений: 293
21.02.2017, 08:59 4
Лучший ответ Сообщение было отмечено Konst2016 как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public interface Person {
 
    default void live() {
        System.out.println("Usually I just live.");
    }
 
    default void doNothing() {
        System.out.println("Usually I do nothing.");
    }
 
    default void coding() {
        System.out.println("Usually I create code.");
    }
 
    default void enjoy() {
        System.out.println("Wonderful life!");
    }
}
Java
1
2
3
class User implements Person {
 
}
Java
1
2
3
class Loser implements Person {
 
}
Java
1
2
3
class Coder implements Person {
 
}
Java
1
2
3
class Proger implements Person {
 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.io.*;
 
class Solution {
 
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Person person = null;
        String key = null;
        boolean isValid = true;
 
        while (isValid) {
            System.out.print("> ");
            key = reader.readLine();
 
            switch (key) {
        case "user":
                person = new User();
                doWork(person);
                break;
            case "loser":
                person = new Loser();
                doWork(person);
                break;
            case "coder":
                person = new Coder();
                doWork(person);
                break;
            case "proger":
                person = new Proger();
                doWork(person);
                break;
            default:
                isValid = false;
                break;
            }
        }
    }
 
    public static void doWork(Person person) {
        if (person instanceof User) {
            person.live();
        }
        else if (person instanceof Loser) {
            person.doNothing();
        }
        else if (person instanceof Coder) {
            person.coding();
        }
        else if (person instanceof Proger) {
            person.enjoy();
        }
    }
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
const@mate ~/progs $ javac Solution.java
const@mate ~/progs $ java Solution
> user
Usually I just live.
> loser
Usually I do nothing.
> coder
Usually I create code.
> proger
Wonderful life!
> give me some money
const@mate ~/progs $
Добавлено через 1 час 2 минуты
В класс Solution.java в строку 33 вставить:
Java
1
                System.out.println("До свидания");
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
const@mate ~/progs $ javac Solution.java
const@mate ~/progs $ java Solution
> user
Usually I just live.
> loser
Usually I do nothing.
> coder
Usually I create code.
> proger
Wonderful life!
> give me some money
До свидания
const@mate ~/progs $
1
7 / 7 / 9
Регистрация: 07.02.2016
Сообщений: 207
Записей в блоге: 28
21.02.2017, 09:26  [ТС] 5
Спасибо ребятки,все работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2017, 09:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Считая, что в таблице записи имеют различные ключи
. const n=300; type запись=record ключ:integer; тело:array of...

Вводить различные числа, пока не будет введен 0
b) Вводить различные числа. Когда будет введен 0, то программа выходит из цикла Не могли бы решить...

Сделать фабрику фильмов вводя ключи в цикле
Здравствуйте!Как решить такую задачу? MovieFactory Расширение функционала по аналогии, чтение с...

Как создавать файлы dat и вводить в них данные (при помощи fstream)?
как создавть файлы .dat и вводить в них данные


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.