diff --git a/04-java_intro/src/AccountBank.java b/04-java_intro/src/AccountBank.java new file mode 100644 index 0000000..75ca23a --- /dev/null +++ b/04-java_intro/src/AccountBank.java @@ -0,0 +1,166 @@ +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +class Bank { + private Map> clientAccountsMap; + private Map accountClientMap; + + public Bank() { + clientAccountsMap = new HashMap<>(); + accountClientMap = new HashMap<>(); + } + + public void addClient(Client client) { + clientAccountsMap.put(client, new ArrayList<>()); + } + + public void addAccount(Client client, Account account) { + List clientAccounts = clientAccountsMap.get(client); + if (clientAccounts != null) { + clientAccounts.add(account); + accountClientMap.put(account, client); + } + } + + public List getAccounts(Client client) { + return clientAccountsMap.getOrDefault(client, new ArrayList<>()); + } + + public Client findClient(Account account) { + return accountClientMap.get(account); + } +} + +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; + } + + @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 { + 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; + } + + @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); + Client client2 = new Client("Милена", 24); + Client client3 = new Client("Алексей", 40); + + // Добавление в банк + bank.addClient(client1); + bank.addClient(client2); + bank.addClient(client3); + + // Создание счетов + 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); + + // Привязка счетов к клиентам + bank.addAccount(client1, account1); + bank.addAccount(client1, account2); + bank.addAccount(client2, account3); + bank.addAccount(client2, account4); + bank.addAccount(client3, account5); + + // Поиск счетов по клиенту + List client1Accounts = bank.getAccounts(client1); + System.out.println("Счета клиента " + client1.getName() + ":"); + for (Account account : client1Accounts) { + System.out.println("Номер счета: " + account.getAccountNumber() + ", Баланс: " + account.getBalance()); + } + + // Поиск клиента по счету + 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("Счет " + account3.getAccountNumber() + " не привязан к клиенту."); + } + } +} \ 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 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