diff --git a/WorkWithJava/ClassesAnimals/Animal.java b/WorkWithJava/ClassesAnimals/Animal.java new file mode 100644 index 0000000..677ecb0 --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Animal.java @@ -0,0 +1,20 @@ +package WorkWithJava.ClassesAnimals; + + +public class Animal implements ICommands { + private final String name; + + public Animal(String name) { + this.name = name; + } + + @Override + public String animalCommand(String command) { + return command; + } + + @Override + public String toString() { + return String.format("Это %s. ", name); + } +} diff --git a/WorkWithJava/ClassesAnimals/Camels.java b/WorkWithJava/ClassesAnimals/Camels.java new file mode 100644 index 0000000..c722866 --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Camels.java @@ -0,0 +1,13 @@ +package WorkWithJava.ClassesAnimals; + +public class Camels extends PackAnimals { + + public Camels(String name) { + super(name); + } + + @Override + public String animalCommand(String command) { + return super.animalCommand(command); + } +} diff --git a/WorkWithJava/ClassesAnimals/Cats.java b/WorkWithJava/ClassesAnimals/Cats.java new file mode 100644 index 0000000..21c273e --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Cats.java @@ -0,0 +1,14 @@ +package WorkWithJava.ClassesAnimals; + +public class Cats extends Pets { + + + public Cats(String name) { + super(name); + } + + @Override + public String animalCommand(String command) { + return super.animalCommand(command); + } +} diff --git a/WorkWithJava/ClassesAnimals/Dogs.java b/WorkWithJava/ClassesAnimals/Dogs.java new file mode 100644 index 0000000..202f908 --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Dogs.java @@ -0,0 +1,12 @@ +package WorkWithJava.ClassesAnimals; + +public class Dogs extends Pets { + public Dogs(String name) { + super(name); + } + + @Override + public String animalCommand(String command) { + return super.animalCommand(command); + } +} diff --git a/WorkWithJava/ClassesAnimals/Donkeys.java b/WorkWithJava/ClassesAnimals/Donkeys.java new file mode 100644 index 0000000..bfdfebd --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Donkeys.java @@ -0,0 +1,12 @@ +package WorkWithJava.ClassesAnimals; + +public class Donkeys extends PackAnimals { + public Donkeys(String name) { + super(name); + } + + @Override + public String animalCommand(String command) { + return super.animalCommand(command); + } +} diff --git a/WorkWithJava/ClassesAnimals/Hamsters.java b/WorkWithJava/ClassesAnimals/Hamsters.java new file mode 100644 index 0000000..81033a0 --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Hamsters.java @@ -0,0 +1,12 @@ +package WorkWithJava.ClassesAnimals; + +public class Hamsters extends Pets { + public Hamsters(String name) { + super(name); + } + + @Override + public String animalCommand(String command) { + return super.animalCommand(command); + } +} diff --git a/WorkWithJava/ClassesAnimals/Horses.java b/WorkWithJava/ClassesAnimals/Horses.java new file mode 100644 index 0000000..f8293ce --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Horses.java @@ -0,0 +1,13 @@ +package WorkWithJava.ClassesAnimals; + +public class Horses extends PackAnimals { + + public Horses(String name) { + super(name); + } + + @Override + public String animalCommand(String command) { + return super.animalCommand(command); + } +} diff --git a/WorkWithJava/ClassesAnimals/ICommands.java b/WorkWithJava/ClassesAnimals/ICommands.java new file mode 100644 index 0000000..239e3e6 --- /dev/null +++ b/WorkWithJava/ClassesAnimals/ICommands.java @@ -0,0 +1,6 @@ +package WorkWithJava.ClassesAnimals; + +public interface ICommands { + public String animalCommand(String command); + +} diff --git a/WorkWithJava/ClassesAnimals/PackAnimals.java b/WorkWithJava/ClassesAnimals/PackAnimals.java new file mode 100644 index 0000000..e0e75b9 --- /dev/null +++ b/WorkWithJava/ClassesAnimals/PackAnimals.java @@ -0,0 +1,9 @@ +package WorkWithJava.ClassesAnimals; + +import WorkWithJava.ClassesAnimals.Animal; + +public class PackAnimals extends Animal { + public PackAnimals(String name) { + super(name); + } +} diff --git a/WorkWithJava/ClassesAnimals/Pets.java b/WorkWithJava/ClassesAnimals/Pets.java new file mode 100644 index 0000000..5d60eed --- /dev/null +++ b/WorkWithJava/ClassesAnimals/Pets.java @@ -0,0 +1,9 @@ +package WorkWithJava.ClassesAnimals; + +import WorkWithJava.ClassesAnimals.Animal; + +public class Pets extends Animal { + public Pets(String name) { + super(name); + } +} diff --git a/WorkWithJava/Counter.java b/WorkWithJava/Counter.java new file mode 100644 index 0000000..c491be7 --- /dev/null +++ b/WorkWithJava/Counter.java @@ -0,0 +1,18 @@ +package WorkWithJava; + +public class Counter implements AutoCloseable { + static int count; + static boolean flag; + + public void add() { + count++; + } + + @Override + public void close() { + if (!flag) { + throw new IllegalStateException("Работа с объектом типа Счетчик была не в ресурсном try или ресурс остался открыт"); + } + } +} + diff --git a/WorkWithJava/MVP/Controller.java b/WorkWithJava/MVP/Controller.java new file mode 100644 index 0000000..e349a82 --- /dev/null +++ b/WorkWithJava/MVP/Controller.java @@ -0,0 +1,13 @@ +package WorkWithJava.MVP; + +import java.io.IOException; + +public class Controller { + + Model model = new Model(); + + public void goProgram() throws IOException { + model.workWithRegistry(); + } + +} diff --git a/WorkWithJava/MVP/Model.java b/WorkWithJava/MVP/Model.java new file mode 100644 index 0000000..ac96b94 --- /dev/null +++ b/WorkWithJava/MVP/Model.java @@ -0,0 +1,26 @@ +package WorkWithJava.MVP; + +import WorkWithJava.WorkWithFiles.ExtraFunctional; +import WorkWithJava.WorkWithFiles.ReadInfo; +import WorkWithJava.Registry; + +import java.io.IOException; + +public class Model { + + View view = new View(); + Registry registry = new Registry(); + + public void workWithRegistry() throws IOException { + + ExtraFunctional extraFunctional = new ExtraFunctional(); + int choice = view.menu(); + switch (choice) { + case 1 -> registry.countAddAnimal(); + case 2 -> ReadInfo.readCommands(); + case 3 -> extraFunctional.addCommand(); + case 4 -> System.out.println("До свидания!"); + } + } +} + diff --git a/WorkWithJava/MVP/View.java b/WorkWithJava/MVP/View.java new file mode 100644 index 0000000..00e5c61 --- /dev/null +++ b/WorkWithJava/MVP/View.java @@ -0,0 +1,20 @@ +package WorkWithJava.MVP; + +import java.util.Scanner; + +public class View { + + public int menu() { + Scanner sc = new Scanner(System.in); + + System.out.println("Выберите цифру меню: "); + System.out.println("\t1. Завести новое животное\n"); + System.out.println("\t2. Увидеть список команд, которое выполняет животное\n"); + System.out.println("\t3. Обучить животное новым командам\n"); + System.out.println("\t4. Выход\n"); + return sc.nextInt(); + } + +} + + diff --git a/WorkWithJava/Program.java b/WorkWithJava/Program.java new file mode 100644 index 0000000..83b69ca --- /dev/null +++ b/WorkWithJava/Program.java @@ -0,0 +1,15 @@ +package WorkWithJava; + +import WorkWithJava.MVP.Controller; + +import java.io.IOException; + +public class Program { + + public static void main(String[] args) throws IOException { + + Controller controller = new Controller(); + controller.goProgram(); + + } +} diff --git a/WorkWithJava/Registry.java b/WorkWithJava/Registry.java new file mode 100644 index 0000000..ee4d9b2 --- /dev/null +++ b/WorkWithJava/Registry.java @@ -0,0 +1,84 @@ +package WorkWithJava; + +import WorkWithJava.ClassesAnimals.*; +import WorkWithJava.WorkWithFiles.WriteInfo; +import java.util.NoSuchElementException; +import java.util.Scanner; + +public class Registry { + Scanner sc = new Scanner(System.in); + public void countAddAnimal() { + try (Counter counter = new Counter()) { + addNewAnimal(); + counter.add(); + Counter.flag = true; + } catch (NoSuchElementException e) { + System.out.println("Ошибка ввода данных"); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + private void addNewAnimal() { + String command; + System.out.println("Какое животное вы хотите завести в базу?"); + System.out.println("1-Домашнее, 2-Вьючнное, введите в консоль цифру: "); + int flag = sc.nextInt(); + if (flag == 1) { + System.out.println("1-Кошка, 2-Собака, 3-Хомяк"); + flag = sc.nextInt(); + if (flag == 1) { + System.out.println("Введите имя животного: "); + Cats cats = new Cats(sc.next()); + sc.nextLine(); + System.out.println("Что умеет животное? Введите команду: "); + command = cats.animalCommand(sc.nextLine()); + WriteInfo.writeBasicInfo("Кошка: ", cats, command); + } + if (flag == 2) { + System.out.println("Введите имя животного: "); + Dogs dogs = new Dogs(sc.next()); + sc.nextLine(); + System.out.println("Что умеет животное? Введите команду: "); + command = dogs.animalCommand(sc.nextLine()); + WriteInfo.writeBasicInfo("Собака: ", dogs, command); + } + if (flag == 3) { + System.out.println("Введите имя животного: "); + Hamsters hamsters = new Hamsters(sc.next()); + sc.nextLine(); + System.out.println("Что умеет животное? Введите команду: "); + command = hamsters.animalCommand(sc.nextLine()); + WriteInfo.writeBasicInfo("Хомяк: ", hamsters, command); + } + } else if (flag == 2) { + System.out.println("1-Лошадь, 2-Осел, 3-Верблюд"); + flag = sc.nextInt(); + if (flag == 1) { + System.out.println("Введите имя животного: "); + Horses horses = new Horses(sc.next()); + sc.nextLine(); + System.out.println("Что умеет животное? Введите команду: "); + command = horses.animalCommand(sc.nextLine()); + WriteInfo.writeBasicInfo("Лошадь: ", horses, command); + } + if (flag == 2) { + System.out.println("Введите имя животного: "); + Donkeys donkeys = new Donkeys(sc.next()); + sc.nextLine(); + System.out.println("Что умеет животное? Введите команду: "); + command = donkeys.animalCommand(sc.nextLine()); + WriteInfo.writeBasicInfo("Осел: ", donkeys, command); + + } + if (flag == 3) { + System.out.println("Введите имя животного: "); + Camels camels = new Camels(sc.next()); + sc.nextLine(); + System.out.println("Что умеет животное? Введите команду: "); + command = camels.animalCommand(sc.nextLine()); + WriteInfo.writeBasicInfo("Верблюд: ", camels, command); + + } + } + } +} \ No newline at end of file diff --git a/WorkWithJava/WorkWithFiles/ExtraFunctional.java b/WorkWithJava/WorkWithFiles/ExtraFunctional.java new file mode 100644 index 0000000..c1772f0 --- /dev/null +++ b/WorkWithJava/WorkWithFiles/ExtraFunctional.java @@ -0,0 +1,45 @@ +package WorkWithJava.WorkWithFiles; + +import java.io.*; +import java.util.Scanner; + +public class ExtraFunctional { + public void addCommand() throws IOException { + + try { + File file = new File("Animals.txt"); + BufferedReader reader = new BufferedReader(new FileReader(file)); + StringBuilder sb = new StringBuilder(); + Scanner sc = new Scanner(System.in); + String line; + System.out.println("Введите имя животного, чтобы изменить команду: "); + String name = sc.nextLine(); + System.out.println("Введите команду: "); + String command = sc.nextLine(); + boolean isLineEdited = false; + + while ((line = reader.readLine()) != null) { + if (line.contains(name)) { + line = line + ", " + command; + isLineEdited = true; + } + + sb.append(line).append("\n"); + + } + reader.close(); + + if (isLineEdited) { + BufferedWriter writer = new BufferedWriter(new FileWriter(file)); + writer.write(sb.toString()); + writer.close(); + System.out.println("Файл успешно отредактирован."); + } else { + System.out.println("Строка не была отредактирована."); + } + } catch (IOException e) { + System.out.println("Ошибка при редактировании файла: " + e.getMessage()); + } + } +} + diff --git a/WorkWithJava/WorkWithFiles/ReadInfo.java b/WorkWithJava/WorkWithFiles/ReadInfo.java new file mode 100644 index 0000000..19118f2 --- /dev/null +++ b/WorkWithJava/WorkWithFiles/ReadInfo.java @@ -0,0 +1,31 @@ +package WorkWithJava.WorkWithFiles; + +import java.io.*; +import java.util.Scanner; + +public class ReadInfo { + + + public static void readCommands() throws IOException { + + File file = new File("Animals.txt"); + Scanner sc = new Scanner(System.in); + + System.out.println("Введите имя животного, чтобы посмотреть, что он умеет : "); + String name = sc.next(); + + try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + if (line.contains(name)) { + int index = line.indexOf(name) + (name.length() + 2); + String needStr = line.substring(index); + System.out.println(needStr); + } + } + + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/WorkWithJava/WorkWithFiles/WriteInfo.java b/WorkWithJava/WorkWithFiles/WriteInfo.java new file mode 100644 index 0000000..58e7c87 --- /dev/null +++ b/WorkWithJava/WorkWithFiles/WriteInfo.java @@ -0,0 +1,26 @@ +package WorkWithJava.WorkWithFiles; + +import WorkWithJava.ClassesAnimals.Animal; + +import java.io.*; +import java.util.HashMap; +import java.util.Map; + +public class WriteInfo { + + public static void writeBasicInfo(String getClass, Animal animal, String command) { + + try (FileWriter writer = new FileWriter("Animals.txt", true)) { + Map animalMap = new HashMap<>(); + animalMap.put(animal, command); + for (Map.Entry entry : animalMap.entrySet()) { + writer.write(getClass); + writer.write(entry.getKey() + "Животное умеет: " + entry.getValue() + "\n"); + } + + } catch (IOException ex) { + System.out.println(ex.getMessage()); + } + } + +}