From ad29b71df757feaff8b70652364567021666764d Mon Sep 17 00:00:00 2001 From: Andlek Date: Sat, 27 May 2023 20:46:12 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BB=203=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0,=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=81=D1=87=D0=B5=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-java_intro/src/AccountBank.java | 125 +++++++++++++++++++++++++++++ 04-java_intro/src/Greeting.java | 16 ---- 04-java_intro/src/HomeWork.java | 22 ----- 3 files changed, 125 insertions(+), 38 deletions(-) create mode 100644 04-java_intro/src/AccountBank.java delete mode 100644 04-java_intro/src/Greeting.java delete mode 100644 04-java_intro/src/HomeWork.java diff --git a/04-java_intro/src/AccountBank.java b/04-java_intro/src/AccountBank.java new file mode 100644 index 0000000..a452757 --- /dev/null +++ b/04-java_intro/src/AccountBank.java @@ -0,0 +1,125 @@ +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +class Bank { + private Map> accounts; + + public Bank() { + accounts = new HashMap<>(); + } + + public void addClient(Client client) { + accounts.put(client, new ArrayList<>()); + } + + public void addAccount(Client client, Account account) { + List clientAccounts = accounts.get(client); + if (clientAccounts != null) { + clientAccounts.add(account); + } + } + + public List getAccounts(Client client) { + return accounts.getOrDefault(client, new ArrayList<>()); + } + + public Client findClient(Account account) { + for (Map.Entry> entry : accounts.entrySet()) { + if (entry.getValue().contains(account)) { + return entry.getKey(); + } + } + return null; + } +} + +class Client { + private String name; + private int age; + + public Client(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} + +class Account { + private int accountNumber; + private double balance; + + public Account(int accountNumber, double balance) { + this.accountNumber = accountNumber; + this.balance = balance; + } + + public int getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(int accountNumber) { + this.accountNumber = accountNumber; + } + + public double getBalance() { + return balance; + } + + public void setBalance(double balance) { + this.balance = balance; + } +} + +public class AccountBank { + public static void main(String[] args) { + Bank bank = new Bank(); + + // создаем клиентов в банке + Client client1 = new Client("Андрей", 31); + bank.addClient(client1); + + Client client2 = new Client("Милена", 24); + bank.addClient(client2); + + // создаем счета и подвязываем к клиентам + Account account1 = new Account(1, 100_000); + bank.addAccount(client1, account1); + + Account account2 = new Account(2, 300_000); + bank.addAccount(client1, account2); + + Account account3 = new Account(3, 200_000); + bank.addAccount(client2, account3); + + List client1Accounts = bank.getAccounts(client1); + System.out.println("Счета клиента №1: "); + for (Account account : client1Accounts) { + System.out.println("Номер счета: " + account.getAccountNumber() + ", Баланс счета: " + account.getBalance()); + } + + //поиск клиента по его счету + Client client = bank.findClient(account3); + if (client != null) { + System.out.println("Владелец счета №3: " + client.getName() + ", Возраст: " + client.getAge()); + } else { + System.out.println("Клиент не найден"); + } + } +} \ No newline at end of file diff --git a/04-java_intro/src/Greeting.java b/04-java_intro/src/Greeting.java deleted file mode 100644 index 0831f01..0000000 --- a/04-java_intro/src/Greeting.java +++ /dev/null @@ -1,16 +0,0 @@ -import java.util.Scanner; - -public class Greeting { - public static void main(String[] args) { - String potentialFriendName = getPotentialFriendName(); - greetNewFriend(potentialFriendName); - } - public static String getPotentialFriendName() { - Scanner sc = new Scanner(System.in); - System.out.println("Как вас зовут?"); - return sc.nextLine(); - } - public static void greetNewFriend(String potentialFriendName) { - System.out.println("Здравствуйте, " + potentialFriendName + ". Рад знакомству!"); - } -} diff --git a/04-java_intro/src/HomeWork.java b/04-java_intro/src/HomeWork.java deleted file mode 100644 index dec3625..0000000 --- a/04-java_intro/src/HomeWork.java +++ /dev/null @@ -1,22 +0,0 @@ -import java.util.Base64; -import java.util.Scanner; - -// Зарегистрироваться на github.com -// Установить git -// Установить JDK и среду разработки -// Открыть данный класс в IDE -// Скомпилировать данный класс с помощью команды javac. -// Запустить программу на выполнение с помощью команды java -// Запустить программу на выполнение с помощью среды разработки -// Когда программа запросит - введите свое имя латиницей -// Сделайте pull-request с программой. -// Отправить в чат задания ссылку на pull-request -public class HomeWork { - public static void main(String[] args) { - Scanner sc = new Scanner(System.in); - System.out.println("Please enter you full name"); - String fullName = sc.nextLine(); - String encodedFullName = Base64.getEncoder().encodeToString(fullName.getBytes()); - System.out.println("Program result: " + encodedFullName); - } -} \ No newline at end of file From 382fc8e242c58c552ad9aa71ec971a06bb99b180 Mon Sep 17 00:00:00 2001 From: Andlek Date: Sun, 28 May 2023 21:41:07 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20equals=20=D0=B8=20has?= =?UTF-8?q?hcode,=20=D0=B0=20=D1=82=D0=B0=D0=BA=D0=B6=D0=B5=20=D0=B5=D1=89?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=B4=D0=BD=D1=83=20map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-java_intro/src/AccountBank.java | 97 +++++++++++++++++++++--------- 1 file changed, 69 insertions(+), 28 deletions(-) diff --git a/04-java_intro/src/AccountBank.java b/04-java_intro/src/AccountBank.java index a452757..75ca23a 100644 --- a/04-java_intro/src/AccountBank.java +++ b/04-java_intro/src/AccountBank.java @@ -2,36 +2,35 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; class Bank { - private Map> accounts; + private Map> clientAccountsMap; + private Map accountClientMap; public Bank() { - accounts = new HashMap<>(); + clientAccountsMap = new HashMap<>(); + accountClientMap = new HashMap<>(); } public void addClient(Client client) { - accounts.put(client, new ArrayList<>()); + clientAccountsMap.put(client, new ArrayList<>()); } public void addAccount(Client client, Account account) { - List clientAccounts = accounts.get(client); + List clientAccounts = clientAccountsMap.get(client); if (clientAccounts != null) { clientAccounts.add(account); + accountClientMap.put(account, client); } } public List getAccounts(Client client) { - return accounts.getOrDefault(client, new ArrayList<>()); + return clientAccountsMap.getOrDefault(client, new ArrayList<>()); } public Client findClient(Account account) { - for (Map.Entry> entry : accounts.entrySet()) { - if (entry.getValue().contains(account)) { - return entry.getKey(); - } - } - return null; + return accountClientMap.get(account); } } @@ -43,7 +42,6 @@ public Client(String name, int age) { this.name = name; this.age = age; } - public String getName() { return name; } @@ -59,6 +57,23 @@ public int getAge() { public void setAge(int age) { this.age = age; } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + Client client = (Client) obj; + return age == client.age && name.equals(client.name); + } + + @Override + public int hashCode() { + return Objects.hash(name, age); + } } class Account { @@ -85,41 +100,67 @@ public double getBalance() { public void setBalance(double balance) { this.balance = balance; } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + Account account = (Account) obj; + return accountNumber == account.accountNumber; + } + + @Override + public int hashCode() { + return Objects.hash(accountNumber); + } } public class AccountBank { public static void main(String[] args) { Bank bank = new Bank(); - // создаем клиентов в банке + // Создание клиентов Client client1 = new Client("Андрей", 31); - bank.addClient(client1); - Client client2 = new Client("Милена", 24); + Client client3 = new Client("Алексей", 40); + + // Добавление в банк + bank.addClient(client1); bank.addClient(client2); + bank.addClient(client3); - // создаем счета и подвязываем к клиентам - Account account1 = new Account(1, 100_000); - bank.addAccount(client1, account1); + // Создание счетов + Account account1 = new Account(1001, 500_000); + Account account2 = new Account(1002, 100_000); + Account account3 = new Account(2001, 750_000); + Account account4 = new Account(2002, 20_000); + Account account5 = new Account(3001, 100_000); - Account account2 = new Account(2, 300_000); + // Привязка счетов к клиентам + bank.addAccount(client1, account1); bank.addAccount(client1, account2); - - Account account3 = new Account(3, 200_000); bank.addAccount(client2, account3); + bank.addAccount(client2, account4); + bank.addAccount(client3, account5); + // Поиск счетов по клиенту List client1Accounts = bank.getAccounts(client1); - System.out.println("Счета клиента №1: "); + System.out.println("Счета клиента " + client1.getName() + ":"); for (Account account : client1Accounts) { - System.out.println("Номер счета: " + account.getAccountNumber() + ", Баланс счета: " + account.getBalance()); + System.out.println("Номер счета: " + account.getAccountNumber() + ", Баланс: " + account.getBalance()); } - //поиск клиента по его счету - Client client = bank.findClient(account3); - if (client != null) { - System.out.println("Владелец счета №3: " + client.getName() + ", Возраст: " + client.getAge()); + // Поиск клиента по счету + account3 = new Account(2001, 750_000); + Client account3Client = bank.findClient(account3); + if (account3Client != null) { + System.out.println("Клиент, чей счет №" + account3.getAccountNumber() + ": " + account3Client.getName()); } else { - System.out.println("Клиент не найден"); + System.out.println("Счет " + account3.getAccountNumber() + " не привязан к клиенту."); } } } \ No newline at end of file From 49c51d7c112424de4e0a6d3bcd1f858396cbbc13 Mon Sep 17 00:00:00 2001 From: Andlek Date: Sat, 3 Jun 2023 17:30:43 +0400 Subject: [PATCH 3/3] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=BE?= =?UTF-8?q?=203=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0,=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA,=20=D0=B2=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=BD=D0=BE=D0=BC=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../otus/java/homework/HomeworkTemplate.java | 46 ----------------- .../src/ru/otus/java/homework/Main.java | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 46 deletions(-) delete mode 100644 L06-if_loops_arrays/src/ru/otus/java/homework/HomeworkTemplate.java create mode 100644 L06-if_loops_arrays/src/ru/otus/java/homework/Main.java diff --git a/L06-if_loops_arrays/src/ru/otus/java/homework/HomeworkTemplate.java b/L06-if_loops_arrays/src/ru/otus/java/homework/HomeworkTemplate.java deleted file mode 100644 index 030bfc9..0000000 --- a/L06-if_loops_arrays/src/ru/otus/java/homework/HomeworkTemplate.java +++ /dev/null @@ -1,46 +0,0 @@ -package ru.otus.java.homework; - -import java.util.Scanner; - -/** - * Заготовка для выполнения ДЗ "Система тестирования". - */ -public class HomeworkTemplate { - public static void main(String[] args) { - // Переменные для хранения количества правильных и неправильных ответов - int correctCount = 0, wrongCount = 0; - - // Ниже вместо null надо написать реализацию, - // написано так, чтобы просто компилировалось - - // TODO: Массив вопросов (вместо null надо написать определение массива) - String[] questions = null; - - // TODO: Массив вариантов ответов - String[][] answerOptions = null; - - // TODO: Массив правильных ответов - int[] correctAnswers = null; - - // Примечание - можете придумать как хранить всю информацию в одном массиве - - Scanner scanner = new Scanner(System.in); - // TODO: Цикл по всем вопросам - исправить, написать правильно - for(int i = 0; i < 0; i++) { - // TODO: Вывод вопроса на экран - - // TODO: Вывод вариантов ответов на экран - - System.out.print("Ваш ответ: "); - //TODO: Считываем с консоли ответ пользователя - - //TODO: Проверяем ответ и выводим результат - // а также увеличиваем счетчики правильных и неправильных ответов - - System.out.println(); - } - - //Выводим общий результат - System.out.println("Результат: правильно " + correctCount + ", неправильно " + wrongCount); - } -} diff --git a/L06-if_loops_arrays/src/ru/otus/java/homework/Main.java b/L06-if_loops_arrays/src/ru/otus/java/homework/Main.java new file mode 100644 index 0000000..92ba3ff --- /dev/null +++ b/L06-if_loops_arrays/src/ru/otus/java/homework/Main.java @@ -0,0 +1,49 @@ +import java.io.*; + +class Resource implements AutoCloseable { + public void open() throws IOException { + System.out.println("Открытие ресурса"); + throw new IOException("Ошибка при открытии ресурса"); + } + + @Override + public void close() throws Exception { + System.out.println("Закрытие ресурса"); + throw new Exception("Ошибка при закрытии ресурса"); + } +} + +class ResourceProcessor { + public void process() throws CustomException { + try (Resource resource = new Resource()) { + resource.open(); + } catch (IOException e) { + System.out.println("Ошибка: " + e.getMessage()); + throw new CustomException("Ошибка обработки ресурса", e); + } catch (Exception e) { + System.out.println("Ошибка при закрытии ресурса: " + e.getMessage()); + throw new CustomException("Ошибка при закрытии ресурса", e); + } + } +} + +class CustomException extends Exception { + public CustomException(String message, Throwable cause) { + super(message, cause); + } +} + +public class Main { + public static void main(String[] args) { + try { + ResourceProcessor processor = new ResourceProcessor(); + processor.process(); + } catch (CustomException e) { + System.out.println("Произошла ошибка при обработке ресурса: " + e.getMessage()); + Throwable cause = e.getCause(); + if (cause != null) { + System.out.println("Причина: " + cause.getMessage()); + } + } + } +} \ No newline at end of file