From 33563a1e80ee19a1378801eba2a54b2744cf0af0 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 10 Mar 2025 18:12:20 +0300 Subject: [PATCH 001/131] =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson14_polymorphism/task1/Main.java | 40 ++++++++++++++++-- .../task1/RightFigure.java | 15 +++++++ .../lesson14_polymorphism/task1/Square.java | 30 ++++++++++++++ .../lesson14_polymorphism/task1/Triangle.java | 41 +++++++++++++++++++ 4 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 src/com/walking/lesson14_polymorphism/task1/RightFigure.java create mode 100644 src/com/walking/lesson14_polymorphism/task1/Square.java create mode 100644 src/com/walking/lesson14_polymorphism/task1/Triangle.java diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 41022d7f2..834d18192 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson14_polymorphism.task1; +import java.util.Scanner; + /** * Реализуйте класс «Правильная фигура». * Для него создайте классы-наследники «Треугольник» и «Квадрат». @@ -10,7 +12,39 @@ *

* Обратите внимание, символ '\' в Java необходимо экранировать: '\\'. */ -public class Main { - public static void main(String[] args) { + import java.util.Scanner; + + public class Main { + + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + System.out.println("Некорректный ввод"); + return; + } + + RightFigure figure = new RightFigure(length); + createShape(figure, figureType); + + } + + private static void createShape(RightFigure figure, String figureType) { + switch (figureType.toLowerCase()) { + case Triangle.NAME: + figure = new Triangle(figure.length); + figure.getTheFigure(); + break; + case Square.NAME: + figure = new Square(figure.length); + figure.getTheFigure(); + break; + default: + figure.getTheFigure(); + } + } } -} diff --git a/src/com/walking/lesson14_polymorphism/task1/RightFigure.java b/src/com/walking/lesson14_polymorphism/task1/RightFigure.java new file mode 100644 index 000000000..89d383150 --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/RightFigure.java @@ -0,0 +1,15 @@ +package com.walking.lesson14_polymorphism.task1; + +public class RightFigure { + int length; + + public RightFigure(int length) { + this.length = length; + } + + protected void getTheFigure() { + System.out.println(" "); + } + + +} diff --git a/src/com/walking/lesson14_polymorphism/task1/Square.java b/src/com/walking/lesson14_polymorphism/task1/Square.java new file mode 100644 index 000000000..ba75c7fdb --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/Square.java @@ -0,0 +1,30 @@ +package com.walking.lesson14_polymorphism.task1; + +public class Square extends RightFigure { + public static final String NAME = ""; + + private final String HORIZONTAL = "-"; + private final String VERTICAL = "|"; + private final String SPACE = " "; + + public Square(int length) { + super(length); + } + + @Override + public void getTheFigure() { + getHorizontalSide(); + getVerticalSide(); + getHorizontalSide(); + } + + private void getHorizontalSide() { + System.out.println(SPACE + HORIZONTAL.repeat(length - 2) + SPACE); + } + + private void getVerticalSide() { + for(int i = 0; i < length - 2; i++) { + System.out.println(VERTICAL + SPACE.repeat(length - 2) + VERTICAL); + } + } +} diff --git a/src/com/walking/lesson14_polymorphism/task1/Triangle.java b/src/com/walking/lesson14_polymorphism/task1/Triangle.java new file mode 100644 index 000000000..c048045a3 --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/Triangle.java @@ -0,0 +1,41 @@ +package com.walking.lesson14_polymorphism.task1; + +public class Triangle extends RightFigure { + public static final String NAME = ""; + + private final String RIGHT_SIDE = "\\"; + private final String LEFT_SIDE = "/"; + private final String BOTTOM_SIDE = "_"; + private final String SPACE = " "; + + public Triangle(int length) { + super(length); + } + + @Override + public void getTheFigure() { + getTriangle(); + getBottomSide(); + } + + private void getBottomSide() { + System.out.println(LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE); + } + + private void getTriangle() { + int k = length / 2; + int j; + if (length % 2 == 0) { + j = 0; + } else { + j = 1; + } + + for (int i = 0; i < length / 2; i++) { + System.out.println(SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE); + k--; + j += 2; + } + } + +} From 318e3ed1ee38f1b3b13166f6ac9b5df00cabae7f Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 12 Mar 2025 17:48:46 +0300 Subject: [PATCH 002/131] lesson 16 task1 interface --- .../lesson14_polymorphism/task1/Main.java | 18 +++++++++--------- .../task1_interface/Goodbye.java | 10 ++++++++++ .../task1_interface/Hello.java | 10 ++++++++++ .../task1_interface/How.java | 10 ++++++++++ .../task1_interface/Main.java | 18 ++++++++++++++++++ .../task1_interface/Printer.java | 8 ++++++++ 6 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 834d18192..9eead3d21 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -3,14 +3,14 @@ import java.util.Scanner; /** - * Реализуйте класс «Правильная фигура». - * Для него создайте классы-наследники «Треугольник» и «Квадрат». + * . + * - . *

- * Пользователь должен иметь возможность ввести длину стороны и выбрать тип фигуры. - * Программа должна нарисовать в консоли выбранную пользователем фигуру, - * используя символы '-', '|', '/', '\'. + * . + * , + * '-', '|', '/', '\'. *

- * Обратите внимание, символ '\' в Java необходимо экранировать: '\\'. + * , '\' Java : '\\'. */ import java.util.Scanner; @@ -18,13 +18,13 @@ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); - System.out.print("Введите тип фигуры: "); + System.out.print(" : "); String figureType = in.nextLine(); - System.out.print("Введите длину стороны: "); + System.out.print(" : "); int length = in.nextInt(); if (length < 1) { - System.out.println("Некорректный ввод"); + System.out.println(" "); return; } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java new file mode 100644 index 000000000..3b7298ef9 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface; + +public class Goodbye implements Printer { + final static String MASSAGE = "Bye"; + final static String RESPOND = "Goodbye"; + + public static void print() { + System.out.println(RESPOND); + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java new file mode 100644 index 000000000..9e639830b --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface; + +public class Hello implements Printer { + final static String MASSAGE = "Hi"; + final static String RESPOND = "Hello"; + + public static void print() { + System.out.println(RESPOND); + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java new file mode 100644 index 000000000..d6c598ce6 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface; + +public class How implements Printer { + final static String MASSAGE = "How are you"; + final static String RESPOND = "How are you doing"; + + public static void print() { + System.out.println(RESPOND); + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java index 75935142a..315200083 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java @@ -1,6 +1,8 @@ package com.walking.lesson16_abstract_class_interface.task1_interface; +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -8,5 +10,21 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.println("Enter massage: "); + String massage = in.nextLine(); + + switch (massage) { + case Hello.MASSAGE: + Hello.print(); + break; + case Goodbye.MASSAGE: + Goodbye.print(); + break; + case How.MASSAGE: + How.print(); + break; + default: Printer.print(); + } } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java new file mode 100644 index 000000000..3adeab6b8 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java @@ -0,0 +1,8 @@ +package com.walking.lesson16_abstract_class_interface.task1_interface; + +public interface Printer { + + static void print() { + System.out.println("Unknown massage"); + } +} From 49bc97247c6e6318cde0ccf471841b7274eb47c4 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 13 Mar 2025 16:44:36 +0300 Subject: [PATCH 003/131] =?UTF-8?q?=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BF?= =?UTF-8?q?=D1=83=D1=82=D0=B0=D0=BB=D0=B0=20=D1=8D=D1=82=D0=BE=20=D0=B1?= =?UTF-8?q?=D1=8B=D0=BB=20lesson=2016=20task2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1_interface/Main.java | 19 +------------------ .../{task1_interface => task2}/Goodbye.java | 2 +- .../{task1_interface => task2}/Hello.java | 2 +- .../{task1_interface => task2}/How.java | 2 +- .../task2/Main.java | 19 +++++++++++++++++++ .../{task1_interface => task2}/Printer.java | 2 +- 6 files changed, 24 insertions(+), 22 deletions(-) rename src/com/walking/lesson16_abstract_class_interface/{task1_interface => task2}/Goodbye.java (74%) rename src/com/walking/lesson16_abstract_class_interface/{task1_interface => task2}/Hello.java (74%) rename src/com/walking/lesson16_abstract_class_interface/{task1_interface => task2}/How.java (75%) rename src/com/walking/lesson16_abstract_class_interface/{task1_interface => task2}/Printer.java (60%) diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java index 315200083..6cb3f91ad 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_interface/Main.java @@ -1,8 +1,5 @@ package com.walking.lesson16_abstract_class_interface.task1_interface; - -import java.util.Scanner; - /** * Реализуйте задачу * ... @@ -10,21 +7,7 @@ */ public class Main { public static void main(String[] args) { - Scanner in = new Scanner(System.in); - System.out.println("Enter massage: "); - String massage = in.nextLine(); - switch (massage) { - case Hello.MASSAGE: - Hello.print(); - break; - case Goodbye.MASSAGE: - Goodbye.print(); - break; - case How.MASSAGE: - How.print(); - break; - default: Printer.print(); - } } + } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java similarity index 74% rename from src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java rename to src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java index 3b7298ef9..f5f73d42e 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Goodbye.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java @@ -1,4 +1,4 @@ -package com.walking.lesson16_abstract_class_interface.task1_interface; +package com.walking.lesson16_abstract_class_interface.task2; public class Goodbye implements Printer { final static String MASSAGE = "Bye"; diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task2/Hello.java similarity index 74% rename from src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java rename to src/com/walking/lesson16_abstract_class_interface/task2/Hello.java index 9e639830b..3559e6c2a 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Hello.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Hello.java @@ -1,4 +1,4 @@ -package com.walking.lesson16_abstract_class_interface.task1_interface; +package com.walking.lesson16_abstract_class_interface.task2; public class Hello implements Printer { final static String MASSAGE = "Hi"; diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java b/src/com/walking/lesson16_abstract_class_interface/task2/How.java similarity index 75% rename from src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java rename to src/com/walking/lesson16_abstract_class_interface/task2/How.java index d6c598ce6..60f809faa 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/How.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/How.java @@ -1,4 +1,4 @@ -package com.walking.lesson16_abstract_class_interface.task1_interface; +package com.walking.lesson16_abstract_class_interface.task2; public class How implements Printer { final static String MASSAGE = "How are you"; diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java index e79f80e2e..192bc9db4 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson16_abstract_class_interface.task2; +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +9,22 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.println("Enter massage: "); + String massage = in.nextLine(); + + switch (massage) { + case Hello.MASSAGE: + Hello.print(); + break; + case Goodbye.MASSAGE: + Goodbye.print(); + break; + case How.MASSAGE: + How.print(); + break; + default: + Printer.print(); + } } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java b/src/com/walking/lesson16_abstract_class_interface/task2/Printer.java similarity index 60% rename from src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java rename to src/com/walking/lesson16_abstract_class_interface/task2/Printer.java index 3adeab6b8..ed0d596ad 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_interface/Printer.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Printer.java @@ -1,4 +1,4 @@ -package com.walking.lesson16_abstract_class_interface.task1_interface; +package com.walking.lesson16_abstract_class_interface.task2; public interface Printer { From b98a86078f64bb52a71e03017a91d973e041a10e Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 13 Mar 2025 16:58:32 +0300 Subject: [PATCH 004/131] lesson 16 task3 --- .../task3/Animal.java | 10 ++++++++++ .../task3/Cat.java | 14 ++++++++++++++ .../task3/Cow.java | 14 ++++++++++++++ .../task3/Dog.java | 14 ++++++++++++++ .../task3/Main.java | 5 +++++ 5 files changed, 57 insertions(+) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/Animal.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/Cat.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/Cow.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/Dog.java diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Animal.java b/src/com/walking/lesson16_abstract_class_interface/task3/Animal.java new file mode 100644 index 000000000..6e1e50ffc --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/Animal.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task3; + +public abstract class Animal { + + public Animal () { + + } + + abstract void sound(); +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Cat.java b/src/com/walking/lesson16_abstract_class_interface/task3/Cat.java new file mode 100644 index 000000000..769ab07cd --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/Cat.java @@ -0,0 +1,14 @@ +package com.walking.lesson16_abstract_class_interface.task3; + +public class Cat extends Animal { + private final String SOUND = "meow"; + + public Cat() { + super(); + } + + public void sound() { + System.out.println(SOUND); + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Cow.java b/src/com/walking/lesson16_abstract_class_interface/task3/Cow.java new file mode 100644 index 000000000..20cf10f2b --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/Cow.java @@ -0,0 +1,14 @@ +package com.walking.lesson16_abstract_class_interface.task3; + +public class Cow extends Animal { + private final String SOUND = "moo"; + + public Cow() { + super(); + } + + public void sound() { + System.out.println(SOUND); + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Dog.java b/src/com/walking/lesson16_abstract_class_interface/task3/Dog.java new file mode 100644 index 000000000..265af5ba8 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/Dog.java @@ -0,0 +1,14 @@ +package com.walking.lesson16_abstract_class_interface.task3; + +public class Dog extends Animal { + private final String SOUND = "woof"; + + public Dog() { + super(); + } + + public void sound() { + System.out.println(SOUND); + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Main.java b/src/com/walking/lesson16_abstract_class_interface/task3/Main.java index f66ab8489..1c8d234c0 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task3/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task3/Main.java @@ -10,5 +10,10 @@ */ public class Main { public static void main(String[] args) { + Animal[] animals = new Animal[] {new Cow(), new Dog(), new Cat()}; + + for (Animal animal : animals) { + animal.sound(); + } } } From f815be3d98ab08e32905eb298970432024e7d9c3 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 17 Mar 2025 14:41:59 +0300 Subject: [PATCH 005/131] =?UTF-8?q?=D0=BA=D0=B8=D1=80=D0=B8=D0=BB=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson14_polymorphism/task1/Main.java | 18 +++++++++--------- .../task1/RightFigure.java | 2 +- .../lesson14_polymorphism/task1/Square.java | 2 +- .../lesson14_polymorphism/task1/Triangle.java | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 9eead3d21..287648c08 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -3,14 +3,14 @@ import java.util.Scanner; /** - * . - * - . + * Реализуйте класс «Правильная фигура». + * Для него создайте классы-наследники «Треугольник» и «Квадрат». *

- * . - * , - * '-', '|', '/', '\'. + * Пользователь должен иметь возможность ввести длину стороны и выбрать тип фигуры. + * Программа должна нарисовать в консоли выбранную пользователем фигуру, + * используя символы '-', '|', '/', '\'. *

- * , '\' Java : '\\'. + * Обратите внимание, символ '\' в Java необходимо экранировать: '\\'. */ import java.util.Scanner; @@ -18,13 +18,13 @@ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); - System.out.print(" : "); + System.out.print("Введите тип фигуры: "); String figureType = in.nextLine(); - System.out.print(" : "); + System.out.print("Введите длину стороны: "); int length = in.nextInt(); if (length < 1) { - System.out.println(" "); + System.out.println("Некорректный ввод"); return; } diff --git a/src/com/walking/lesson14_polymorphism/task1/RightFigure.java b/src/com/walking/lesson14_polymorphism/task1/RightFigure.java index 89d383150..6f4de8cfa 100644 --- a/src/com/walking/lesson14_polymorphism/task1/RightFigure.java +++ b/src/com/walking/lesson14_polymorphism/task1/RightFigure.java @@ -8,7 +8,7 @@ public RightFigure(int length) { } protected void getTheFigure() { - System.out.println(" "); + System.out.println("Неизвестная фигура"); } diff --git a/src/com/walking/lesson14_polymorphism/task1/Square.java b/src/com/walking/lesson14_polymorphism/task1/Square.java index ba75c7fdb..556216018 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Square.java +++ b/src/com/walking/lesson14_polymorphism/task1/Square.java @@ -1,7 +1,7 @@ package com.walking.lesson14_polymorphism.task1; public class Square extends RightFigure { - public static final String NAME = ""; + public static final String NAME = "квадрат"; private final String HORIZONTAL = "-"; private final String VERTICAL = "|"; diff --git a/src/com/walking/lesson14_polymorphism/task1/Triangle.java b/src/com/walking/lesson14_polymorphism/task1/Triangle.java index c048045a3..55b6a2c70 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Triangle.java +++ b/src/com/walking/lesson14_polymorphism/task1/Triangle.java @@ -1,7 +1,7 @@ package com.walking.lesson14_polymorphism.task1; public class Triangle extends RightFigure { - public static final String NAME = ""; + public static final String NAME = "треугольник"; private final String RIGHT_SIDE = "\\"; private final String LEFT_SIDE = "/"; From cf5894b9347549c3c9af4287077066135c6de3d5 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 17 Mar 2025 15:08:26 +0300 Subject: [PATCH 006/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?task14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson14_polymorphism/task1/Main.java | 19 ++++----- .../task1/RightFigure.java | 15 ------- .../lesson14_polymorphism/task1/Square.java | 30 -------------- .../lesson14_polymorphism/task1/Triangle.java | 41 ------------------- .../task1/figure/RegularFigure.java | 15 +++++++ .../task1/figure/Square.java | 30 ++++++++++++++ .../task1/figure/Triangle.java | 38 +++++++++++++++++ 7 files changed, 91 insertions(+), 97 deletions(-) delete mode 100644 src/com/walking/lesson14_polymorphism/task1/RightFigure.java delete mode 100644 src/com/walking/lesson14_polymorphism/task1/Square.java delete mode 100644 src/com/walking/lesson14_polymorphism/task1/Triangle.java create mode 100644 src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java create mode 100644 src/com/walking/lesson14_polymorphism/task1/figure/Square.java create mode 100644 src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 287648c08..53b61a759 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson14_polymorphism.task1; +import com.walking.lesson14_polymorphism.task1.figure.RegularFigure; +import com.walking.lesson14_polymorphism.task1.figure.Square; +import com.walking.lesson14_polymorphism.task1.figure.Triangle; + import java.util.Scanner; /** @@ -12,9 +16,8 @@ *

* Обратите внимание, символ '\' в Java необходимо экранировать: '\\'. */ - import java.util.Scanner; - public class Main { +public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); @@ -28,23 +31,17 @@ public static void main(String[] args) { return; } - RightFigure figure = new RightFigure(length); - createShape(figure, figureType); - - } + RegularFigure figure = new RegularFigure(length); - private static void createShape(RightFigure figure, String figureType) { switch (figureType.toLowerCase()) { case Triangle.NAME: figure = new Triangle(figure.length); - figure.getTheFigure(); break; case Square.NAME: figure = new Square(figure.length); - figure.getTheFigure(); break; - default: - figure.getTheFigure(); } + + System.out.println(figure.getFigure()); } } diff --git a/src/com/walking/lesson14_polymorphism/task1/RightFigure.java b/src/com/walking/lesson14_polymorphism/task1/RightFigure.java deleted file mode 100644 index 6f4de8cfa..000000000 --- a/src/com/walking/lesson14_polymorphism/task1/RightFigure.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.walking.lesson14_polymorphism.task1; - -public class RightFigure { - int length; - - public RightFigure(int length) { - this.length = length; - } - - protected void getTheFigure() { - System.out.println("Неизвестная фигура"); - } - - -} diff --git a/src/com/walking/lesson14_polymorphism/task1/Square.java b/src/com/walking/lesson14_polymorphism/task1/Square.java deleted file mode 100644 index 556216018..000000000 --- a/src/com/walking/lesson14_polymorphism/task1/Square.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.walking.lesson14_polymorphism.task1; - -public class Square extends RightFigure { - public static final String NAME = "квадрат"; - - private final String HORIZONTAL = "-"; - private final String VERTICAL = "|"; - private final String SPACE = " "; - - public Square(int length) { - super(length); - } - - @Override - public void getTheFigure() { - getHorizontalSide(); - getVerticalSide(); - getHorizontalSide(); - } - - private void getHorizontalSide() { - System.out.println(SPACE + HORIZONTAL.repeat(length - 2) + SPACE); - } - - private void getVerticalSide() { - for(int i = 0; i < length - 2; i++) { - System.out.println(VERTICAL + SPACE.repeat(length - 2) + VERTICAL); - } - } -} diff --git a/src/com/walking/lesson14_polymorphism/task1/Triangle.java b/src/com/walking/lesson14_polymorphism/task1/Triangle.java deleted file mode 100644 index 55b6a2c70..000000000 --- a/src/com/walking/lesson14_polymorphism/task1/Triangle.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.walking.lesson14_polymorphism.task1; - -public class Triangle extends RightFigure { - public static final String NAME = "треугольник"; - - private final String RIGHT_SIDE = "\\"; - private final String LEFT_SIDE = "/"; - private final String BOTTOM_SIDE = "_"; - private final String SPACE = " "; - - public Triangle(int length) { - super(length); - } - - @Override - public void getTheFigure() { - getTriangle(); - getBottomSide(); - } - - private void getBottomSide() { - System.out.println(LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE); - } - - private void getTriangle() { - int k = length / 2; - int j; - if (length % 2 == 0) { - j = 0; - } else { - j = 1; - } - - for (int i = 0; i < length / 2; i++) { - System.out.println(SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE); - k--; - j += 2; - } - } - -} diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java b/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java new file mode 100644 index 000000000..06aaa43d5 --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java @@ -0,0 +1,15 @@ +package com.walking.lesson14_polymorphism.task1.figure; + +public class RegularFigure { + public final int length; + + public RegularFigure(int length) { + this.length = length; + } + + public String getFigure() { + return "Неизвестная фигура"; + } + + +} diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/Square.java b/src/com/walking/lesson14_polymorphism/task1/figure/Square.java new file mode 100644 index 000000000..fee776223 --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/figure/Square.java @@ -0,0 +1,30 @@ +package com.walking.lesson14_polymorphism.task1.figure; + +public class Square extends RegularFigure { + public static final String NAME = "квадрат"; + + private final String HORIZONTAL = "-"; + private final String VERTICAL = "|"; + private final String SPACE = " "; + + public Square(int length) { + super(length); + } + + @Override + public String getFigure() { + String square = getHorizontalSide(); + for(int i = 0; i < length - 2; i++) { + square += getVerticalSide(); + } + return square + getHorizontalSide(); + } + + private String getHorizontalSide() { + return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + "\n"; + } + + private String getVerticalSide() { + return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + "\n"; + } +} diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java b/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java new file mode 100644 index 000000000..87109bd06 --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java @@ -0,0 +1,38 @@ +package com.walking.lesson14_polymorphism.task1.figure; + +public class Triangle extends RegularFigure { + public static final String NAME = "треугольник"; + + private final String RIGHT_SIDE = "\\"; + private final String LEFT_SIDE = "/"; + private final String BOTTOM_SIDE = "_"; + private final String SPACE = " "; + + public Triangle(int length) { + super(length); + } + + @Override + public String getFigure() { + return getTriangle() + getBottomSide(); + } + + private String getBottomSide() { + return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + + private String getTriangle() { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + "\n"; + k--; + j += 2; + } + + return triangle; + } + +} From 3901d0751d618c63e0abf72187966ca4bcd6ea2a Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 17 Mar 2025 17:03:49 +0300 Subject: [PATCH 007/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2016=20task2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task2/Goodbye.java | 10 ------ .../task2/Hello.java | 10 ------ .../task2/How.java | 10 ------ .../task2/Main.java | 32 +++++++++++++------ .../task2/Printer.java | 8 ----- .../task2/printer/Goodbye.java | 13 ++++++++ .../task2/printer/Hello.java | 13 ++++++++ .../task2/printer/How.java | 14 ++++++++ .../task2/printer/Printer.java | 7 ++++ 9 files changed, 69 insertions(+), 48 deletions(-) delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/Hello.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/How.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/Printer.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java deleted file mode 100644 index f5f73d42e..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Goodbye.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2; - -public class Goodbye implements Printer { - final static String MASSAGE = "Bye"; - final static String RESPOND = "Goodbye"; - - public static void print() { - System.out.println(RESPOND); - } -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task2/Hello.java deleted file mode 100644 index 3559e6c2a..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Hello.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2; - -public class Hello implements Printer { - final static String MASSAGE = "Hi"; - final static String RESPOND = "Hello"; - - public static void print() { - System.out.println(RESPOND); - } -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/How.java b/src/com/walking/lesson16_abstract_class_interface/task2/How.java deleted file mode 100644 index 60f809faa..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/How.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2; - -public class How implements Printer { - final static String MASSAGE = "How are you"; - final static String RESPOND = "How are you doing"; - - public static void print() { - System.out.println(RESPOND); - } -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java index 192bc9db4..843a00a2d 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson16_abstract_class_interface.task2; +import com.walking.lesson16_abstract_class_interface.task2.printer.Goodbye; +import com.walking.lesson16_abstract_class_interface.task2.printer.Hello; +import com.walking.lesson16_abstract_class_interface.task2.printer.How; +import com.walking.lesson16_abstract_class_interface.task2.printer.Printer; + import java.util.Scanner; /** @@ -10,21 +15,28 @@ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); - System.out.println("Enter massage: "); - String massage = in.nextLine(); + System.out.print("Enter message: "); + String message = in.nextLine(); - switch (massage) { - case Hello.MASSAGE: - Hello.print(); + Printer answer; + switch (message) { + case "Hi": + answer = new Hello(); break; - case Goodbye.MASSAGE: - Goodbye.print(); + case "Bye": + answer = new Goodbye(); break; - case How.MASSAGE: - How.print(); + case "How are you": + answer = new How(); break; default: - Printer.print(); + answer = null; + } + + if (answer != null) { + System.out.println(answer.print()); + } else { + System.out.println("Unknown message"); } } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Printer.java b/src/com/walking/lesson16_abstract_class_interface/task2/Printer.java deleted file mode 100644 index ed0d596ad..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Printer.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2; - -public interface Printer { - - static void print() { - System.out.println("Unknown massage"); - } -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java new file mode 100644 index 000000000..0b307770b --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java @@ -0,0 +1,13 @@ +package com.walking.lesson16_abstract_class_interface.task2.printer; + +public class Goodbye implements Printer { + final static String RESPOND = "Goodbye"; + + public Goodbye() { + + } + + public String print() { + return RESPOND; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java new file mode 100644 index 000000000..599247b4e --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java @@ -0,0 +1,13 @@ +package com.walking.lesson16_abstract_class_interface.task2.printer; + +public class Hello implements Printer { + final static String RESPOND = "Hello"; + + public Hello() { + + } + + public String print() { + return RESPOND; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java new file mode 100644 index 000000000..640ab303f --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java @@ -0,0 +1,14 @@ +package com.walking.lesson16_abstract_class_interface.task2.printer; + +public class How implements Printer { + final static String RESPOND = "How are you doing"; + + public How() { + + } + + public String print() { + return RESPOND; + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java new file mode 100644 index 000000000..e6b3dad26 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java @@ -0,0 +1,7 @@ +package com.walking.lesson16_abstract_class_interface.task2.printer; + +public interface Printer { + + String print(); + +} From d9e334781bc2d3b1a44183fe7c392265ac90c757 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 17 Mar 2025 17:07:14 +0300 Subject: [PATCH 008/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2016=20task3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task3/Animal.java | 10 ---------- .../lesson16_abstract_class_interface/task3/Main.java | 5 +++++ .../task3/animals/Animal.java | 6 ++++++ .../task3/{ => animals}/Cat.java | 5 +---- .../task3/{ => animals}/Cow.java | 5 +---- .../task3/{ => animals}/Dog.java | 5 +---- 6 files changed, 14 insertions(+), 22 deletions(-) delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/Animal.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task3/animals/Animal.java rename src/com/walking/lesson16_abstract_class_interface/task3/{ => animals}/Cat.java (58%) rename src/com/walking/lesson16_abstract_class_interface/task3/{ => animals}/Cow.java (58%) rename src/com/walking/lesson16_abstract_class_interface/task3/{ => animals}/Dog.java (58%) diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Animal.java b/src/com/walking/lesson16_abstract_class_interface/task3/Animal.java deleted file mode 100644 index 6e1e50ffc..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task3/Animal.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task3; - -public abstract class Animal { - - public Animal () { - - } - - abstract void sound(); -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Main.java b/src/com/walking/lesson16_abstract_class_interface/task3/Main.java index 1c8d234c0..bb7cb3fdc 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task3/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task3/Main.java @@ -1,6 +1,11 @@ package com.walking.lesson16_abstract_class_interface.task3; +import com.walking.lesson16_abstract_class_interface.task3.animals.Animal; +import com.walking.lesson16_abstract_class_interface.task3.animals.Cat; +import com.walking.lesson16_abstract_class_interface.task3.animals.Cow; +import com.walking.lesson16_abstract_class_interface.task3.animals.Dog; + /** * Реализуйте любую задачу из уроков о наследовании или полиморфизме с использованием новых знаний. * Выбирайте инструмент с умом. diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/animals/Animal.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Animal.java new file mode 100644 index 000000000..e2e417b14 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Animal.java @@ -0,0 +1,6 @@ +package com.walking.lesson16_abstract_class_interface.task3.animals; + +public abstract class Animal { + + public abstract void sound(); +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Cat.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cat.java similarity index 58% rename from src/com/walking/lesson16_abstract_class_interface/task3/Cat.java rename to src/com/walking/lesson16_abstract_class_interface/task3/animals/Cat.java index 769ab07cd..64a0e5287 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task3/Cat.java +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cat.java @@ -1,11 +1,8 @@ -package com.walking.lesson16_abstract_class_interface.task3; +package com.walking.lesson16_abstract_class_interface.task3.animals; public class Cat extends Animal { private final String SOUND = "meow"; - public Cat() { - super(); - } public void sound() { System.out.println(SOUND); diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Cow.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cow.java similarity index 58% rename from src/com/walking/lesson16_abstract_class_interface/task3/Cow.java rename to src/com/walking/lesson16_abstract_class_interface/task3/animals/Cow.java index 20cf10f2b..76e5d2c03 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task3/Cow.java +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cow.java @@ -1,11 +1,8 @@ -package com.walking.lesson16_abstract_class_interface.task3; +package com.walking.lesson16_abstract_class_interface.task3.animals; public class Cow extends Animal { private final String SOUND = "moo"; - public Cow() { - super(); - } public void sound() { System.out.println(SOUND); diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/Dog.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Dog.java similarity index 58% rename from src/com/walking/lesson16_abstract_class_interface/task3/Dog.java rename to src/com/walking/lesson16_abstract_class_interface/task3/animals/Dog.java index 265af5ba8..eb9cd229a 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task3/Dog.java +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Dog.java @@ -1,11 +1,8 @@ -package com.walking.lesson16_abstract_class_interface.task3; +package com.walking.lesson16_abstract_class_interface.task3.animals; public class Dog extends Animal { private final String SOUND = "woof"; - public Dog() { - super(); - } public void sound() { System.out.println(SOUND); From d6417a6b13853fd19552debe3a52692526c5351f Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 17 Mar 2025 17:08:54 +0300 Subject: [PATCH 009/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2016=20task2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task2/printer/Goodbye.java | 4 ---- .../task2/printer/Hello.java | 4 ---- .../lesson16_abstract_class_interface/task2/printer/How.java | 4 ---- 3 files changed, 12 deletions(-) diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java index 0b307770b..73a358055 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java @@ -3,10 +3,6 @@ public class Goodbye implements Printer { final static String RESPOND = "Goodbye"; - public Goodbye() { - - } - public String print() { return RESPOND; } diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java index 599247b4e..63dffc77c 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java @@ -3,10 +3,6 @@ public class Hello implements Printer { final static String RESPOND = "Hello"; - public Hello() { - - } - public String print() { return RESPOND; } diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java index 640ab303f..a469d3bc3 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java @@ -3,10 +3,6 @@ public class How implements Printer { final static String RESPOND = "How are you doing"; - public How() { - - } - public String print() { return RESPOND; } From 34ef3fc1321bfc88efb008319c7493585b4ab6e4 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 18 Mar 2025 17:35:05 +0300 Subject: [PATCH 010/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2016=20task1=20=D0=B0=D0=B1=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/figure/Square.java | 2 +- .../task1_abstract_class/Main.java | 33 +++++++++++++++++ .../figures/RegularFigure.java | 14 +++++++ .../task1_abstract_class/figures/Square.java | 29 +++++++++++++++ .../figures/Triangle.java | 37 +++++++++++++++++++ .../task1_abstract_class/figures/Unknown.java | 13 +++++++ 6 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Unknown.java diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/Square.java b/src/com/walking/lesson14_polymorphism/task1/figure/Square.java index fee776223..7047c3337 100644 --- a/src/com/walking/lesson14_polymorphism/task1/figure/Square.java +++ b/src/com/walking/lesson14_polymorphism/task1/figure/Square.java @@ -14,7 +14,7 @@ public Square(int length) { @Override public String getFigure() { String square = getHorizontalSide(); - for(int i = 0; i < length - 2; i++) { + for (int i = 0; i < length - 2; i++) { square += getVerticalSide(); } return square + getHorizontalSide(); diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java index 94f5a30f7..e6d365d2e 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java @@ -1,5 +1,13 @@ package com.walking.lesson16_abstract_class_interface.task1_abstract_class; + +import com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures.RegularFigure; +import com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures.Square; +import com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures.Triangle; +import com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures.Unknown; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +15,30 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + System.out.println("Некорректный ввод"); + return; + } + + RegularFigure figure; + + switch (figureType.toLowerCase()) { + case Triangle.NAME: + figure = new Triangle(length); + break; + case Square.NAME: + figure = new Square(length); + break; + default: + figure = new Unknown(length); + } + + System.out.println(figure.getFigure()); } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java new file mode 100644 index 000000000..4c31831af --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java @@ -0,0 +1,14 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures; + +public abstract class RegularFigure { + protected final String SPACE = " "; + protected final String NEXT_LINE_SYMBOL = "\n"; + public final int length; + + protected RegularFigure(int length) { + this.length = length; + } + + public abstract String getFigure(); + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java new file mode 100644 index 000000000..d4fdd3b74 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java @@ -0,0 +1,29 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures; + +public class Square extends RegularFigure { + public static final String NAME = "квадрат"; + + private final String HORIZONTAL = "-"; + private final String VERTICAL = "|"; + + public Square(int length) { + super(length); + } + + @Override + public String getFigure() { + String square = getHorizontalSide(); + for (int i = 0; i < length - 2; i++) { + square += getVerticalSide(); + } + return square + getHorizontalSide(); + } + + private String getHorizontalSide() { + return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + } + + private String getVerticalSide() { + return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java new file mode 100644 index 000000000..4501586f1 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java @@ -0,0 +1,37 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures; + +public class Triangle extends RegularFigure { + public static final String NAME = "треугольник"; + + private final String RIGHT_SIDE = "\\"; + private final String LEFT_SIDE = "/"; + private final String BOTTOM_SIDE = "_"; + + + public Triangle(int length) { + super(length); + } + + @Override + public String getFigure() { + return getTriangle() + getBottomSide(); + } + + private String getBottomSide() { + return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + + private String getTriangle() { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + return triangle; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Unknown.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Unknown.java new file mode 100644 index 000000000..7fb4fde9a --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Unknown.java @@ -0,0 +1,13 @@ +package com.walking.lesson16_abstract_class_interface.task1_abstract_class.figures; + +public class Unknown extends RegularFigure { + + public Unknown(int length) { + super(length); + } + + @Override + public String getFigure() { + return "Неизвестная фигура"; + } +} From 7ea65ffaae4236230ad70f34fc0bea339b240bfb Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 18 Mar 2025 18:54:45 +0300 Subject: [PATCH 011/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2017=20task1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson17_enum/task1/Main.java | 26 +++++++++++++++++++ .../task1/greetings/GreetingTypes.java | 15 +++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java diff --git a/src/com/walking/lesson17_enum/task1/Main.java b/src/com/walking/lesson17_enum/task1/Main.java index 7fc684202..0db252ee6 100644 --- a/src/com/walking/lesson17_enum/task1/Main.java +++ b/src/com/walking/lesson17_enum/task1/Main.java @@ -1,5 +1,11 @@ package com.walking.lesson17_enum.task1; +import com.walking.lesson17_enum.task1.greetings.GreetingTypes; + +import java.util.Scanner; + + + /** * Реализуйте задачу * ... @@ -8,5 +14,25 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Enter message: "); + String greeting = in.nextLine(); + + GreetingTypes greet; + switch (greeting) { + case "Hi": + greet = GreetingTypes.HELLO; + break; + case "Bye": + greet = GreetingTypes.GOODBYE; + break; + case "How are you": + greet = GreetingTypes.HOW; + break; + default: + greet = GreetingTypes.UNKNOWN; + break; + } + System.out.println(greet.getGreeting()); } } diff --git a/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java b/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java new file mode 100644 index 000000000..e43cd45b9 --- /dev/null +++ b/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java @@ -0,0 +1,15 @@ +package com.walking.lesson17_enum.task1.greetings; + +public enum GreetingTypes { + + HELLO("Hello"), GOODBYE("Goodbye"), HOW("How are you"), UNKNOWN("Unknown message"); + final String greeting; + + GreetingTypes(String greeting) { + this.greeting = greeting; + } + + public String getGreeting() { + return greeting; + } +} From da9f70b1d5552479c1536a53163a2a78027f8f34 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 18 Mar 2025 19:18:46 +0300 Subject: [PATCH 012/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2017=20task1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson17_enum/task1/Main.java | 19 ++---------- .../task1/greetings/GreetingTypes.java | 29 +++++++++++++++++-- .../lesson17_enum/task2/animals/Animal.java | 4 +++ 3 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 src/com/walking/lesson17_enum/task2/animals/Animal.java diff --git a/src/com/walking/lesson17_enum/task1/Main.java b/src/com/walking/lesson17_enum/task1/Main.java index 0db252ee6..2bd1ca691 100644 --- a/src/com/walking/lesson17_enum/task1/Main.java +++ b/src/com/walking/lesson17_enum/task1/Main.java @@ -18,21 +18,8 @@ public static void main(String[] args) { System.out.print("Enter message: "); String greeting = in.nextLine(); - GreetingTypes greet; - switch (greeting) { - case "Hi": - greet = GreetingTypes.HELLO; - break; - case "Bye": - greet = GreetingTypes.GOODBYE; - break; - case "How are you": - greet = GreetingTypes.HOW; - break; - default: - greet = GreetingTypes.UNKNOWN; - break; - } - System.out.println(greet.getGreeting()); + GreetingTypes greet = GreetingTypes.findGreetingType(greeting); + System.out.println(greet.getRespond()); + } } diff --git a/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java b/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java index e43cd45b9..acf089c5c 100644 --- a/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java +++ b/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java @@ -2,14 +2,37 @@ public enum GreetingTypes { - HELLO("Hello"), GOODBYE("Goodbye"), HOW("How are you"), UNKNOWN("Unknown message"); - final String greeting; + HELLO("Hi", "Hello"), + GOODBYE("Bye", "Goodbye"), + HOW("How are you", "How are you doing"), + UNKNOWN(null, "Unknown message"); - GreetingTypes(String greeting) { + private final String greeting; + private final String respond; + + GreetingTypes(String greeting, String respond) { this.greeting = greeting; + this.respond = respond; + } + + public static GreetingTypes findGreetingType(String greeting) { + if (greeting == null) { + return UNKNOWN; + } + + for (GreetingTypes type : GreetingTypes.values()) { + if (greeting.equals(type.greeting)) { + return type; + } + } + return UNKNOWN; } public String getGreeting() { return greeting; } + + public String getRespond() { + return respond; + } } diff --git a/src/com/walking/lesson17_enum/task2/animals/Animal.java b/src/com/walking/lesson17_enum/task2/animals/Animal.java new file mode 100644 index 000000000..dccbd4377 --- /dev/null +++ b/src/com/walking/lesson17_enum/task2/animals/Animal.java @@ -0,0 +1,4 @@ +package com.walking.lesson17_enum.task2.animals; + +public enum Animal { +} From 6b72e7e10d80d6bfb924d41e2859576658da5469 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 18 Mar 2025 21:00:59 +0300 Subject: [PATCH 013/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?lesson=2017=20task2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson17_enum/task2/Main.java | 7 +++++++ .../walking/lesson17_enum/task2/animals/Animal.java | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/com/walking/lesson17_enum/task2/Main.java b/src/com/walking/lesson17_enum/task2/Main.java index 293ca15c9..01037c444 100644 --- a/src/com/walking/lesson17_enum/task2/Main.java +++ b/src/com/walking/lesson17_enum/task2/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson17_enum.task2; +import com.walking.lesson17_enum.task2.animals.Animal; + /** * Реализуйте задачу * ... @@ -7,5 +9,10 @@ */ public class Main { public static void main(String[] args) { + + Animal[] animals = Animal.values(); + for (Animal animal : animals) { + System.out.println(animal.getSound()); + } } } diff --git a/src/com/walking/lesson17_enum/task2/animals/Animal.java b/src/com/walking/lesson17_enum/task2/animals/Animal.java index dccbd4377..0a9212e9f 100644 --- a/src/com/walking/lesson17_enum/task2/animals/Animal.java +++ b/src/com/walking/lesson17_enum/task2/animals/Animal.java @@ -1,4 +1,15 @@ package com.walking.lesson17_enum.task2.animals; public enum Animal { + CAT("meow"), Dog("woof"), Cow("moo"); + + private final String sound; + + Animal(String sound) { + this.sound = sound; + } + + public String getSound() { + return sound; + } } From 88b156bbdd1296424cc7a11fa13b2308946d18a9 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 19 Mar 2025 11:24:21 +0300 Subject: [PATCH 014/131] lesson 17 task3 --- src/com/walking/lesson17_enum/task3/Main.java | 15 ++++ .../task3/figure/RegularFigure.java | 76 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 src/com/walking/lesson17_enum/task3/figure/RegularFigure.java diff --git a/src/com/walking/lesson17_enum/task3/Main.java b/src/com/walking/lesson17_enum/task3/Main.java index fb541e003..04b8d799d 100644 --- a/src/com/walking/lesson17_enum/task3/Main.java +++ b/src/com/walking/lesson17_enum/task3/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson17_enum.task3; +import com.walking.lesson17_enum.task3.figure.RegularFigure; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +11,16 @@ */ public class Main { public static void main(String[] args) { + + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String name = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + RegularFigure figure = RegularFigure.getFigureByName(name); + figure.setLength(length); + + System.out.println(figure.getFigure()); } } diff --git a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java new file mode 100644 index 000000000..3560444fd --- /dev/null +++ b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java @@ -0,0 +1,76 @@ +package com.walking.lesson17_enum.task3.figure; + + +public enum RegularFigure { + TRIANGLE("треугольник"){ + public String getFigure() { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE_TRIANGLE + SPACE.repeat(j) + RIGHT_SIDE_TRIANGLE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + triangle += LEFT_SIDE_TRIANGLE + HORIZONTAL_SIDE.repeat(length) + RIGHT_SIDE_TRIANGLE; + return triangle; + } + }, + + SQUARE("квадрат") { + public String getFigure() { + String square = SPACE + HORIZONTAL_SQUARE.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + for (int i = 0; i < length - 2; i++) { + square += VERTICAL_SQUARE + SPACE.repeat(length - 2) + VERTICAL_SQUARE + NEXT_LINE_SYMBOL; + } + square += SPACE + HORIZONTAL_SQUARE.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + return square; + } + }, + + UNKNOWN(null) { + public String getFigure() { + return "Неизвестная фигура"; + } + }; + + private static final String SPACE = " "; + private static final String NEXT_LINE_SYMBOL = "\n"; + private static final String RIGHT_SIDE_TRIANGLE = "\\"; + private static final String LEFT_SIDE_TRIANGLE = "/"; + private static final String HORIZONTAL_SIDE = "_"; + private static final String HORIZONTAL_SQUARE = "-"; + private static final String VERTICAL_SQUARE = "|"; + final String name; + int length; + + RegularFigure(String name) { + this.name = name; + } + + public static RegularFigure getFigureByName(String name) { + if (name == null) { + return UNKNOWN; + } + + for (RegularFigure figure : RegularFigure.values()) { + if (name.toLowerCase().equals(figure.getName())) { + return figure; + } + } + + return UNKNOWN; + } + + public void setLength(int length) { + this.length = length; + } + + public String getName() { + return name; + } + + public abstract String getFigure(); +} From 68f28598db3e54b7dc87471de99b611108e9ed34 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 19 Mar 2025 12:44:34 +0300 Subject: [PATCH 015/131] lesson 18 task1 --- .../task1_getClass/Main.java | 7 +++++++ .../task1_getClass/animals/Animal.java | 8 ++++++++ .../task1_getClass/animals/Cat.java | 15 +++++++++++++++ .../task1_getClass/animals/Cow.java | 15 +++++++++++++++ .../task1_getClass/animals/Dog.java | 15 +++++++++++++++ .../task1_getClass/animals/Unknown.java | 14 ++++++++++++++ .../task1_instanceof/Main.java | 18 ++++++++++++++++++ .../task1_instanceof/animals/Animal.java | 7 +++++++ .../task1_instanceof/animals/Cat.java | 15 +++++++++++++++ .../task1_instanceof/animals/Cow.java | 15 +++++++++++++++ .../task1_instanceof/animals/Dog.java | 15 +++++++++++++++ .../task1_instanceof/animals/Unknown.java | 14 ++++++++++++++ 12 files changed, 158 insertions(+) create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java create mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java index 1993f716e..14c81c270 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass; +import com.walking.lesson18_instanceof_getClass.task1_getClass.animals.*; + /** * Реализовать задачу * ... @@ -7,5 +9,10 @@ */ public class Main { public static void main(String[] args) { + Animal[] animals = new Animal[] {new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; + for(Animal animal : animals) { + animal.getClass(); + animal.sound(); + } } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java new file mode 100644 index 000000000..e71d53109 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java @@ -0,0 +1,8 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public abstract class Animal { + + public abstract String getVoice(); + + public abstract void sound(); +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java new file mode 100644 index 000000000..6f414d333 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java @@ -0,0 +1,15 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Cat extends Animal{ + private final String voice = "meow"; + + @Override + public String getVoice() { + return voice; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java new file mode 100644 index 000000000..fba9062d4 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java @@ -0,0 +1,15 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Cow extends Animal { + private final String voice = "moo"; + + @Override + public String getVoice() { + return voice; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java new file mode 100644 index 000000000..9f2afdd08 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java @@ -0,0 +1,15 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Dog extends Animal { + private final String voice = "woof"; + + @Override + public String getVoice() { + return voice; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java new file mode 100644 index 000000000..dbfdc3ba4 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java @@ -0,0 +1,14 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Unknown extends Animal{ + + @Override + public String getVoice() { + return "Unknown animal"; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java index 4f267a04b..223be5ff4 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java @@ -1,5 +1,8 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof; + +import com.walking.lesson18_instanceof_getClass.task1_instanceof.animals.*; + /** * Реализовать задачу * ... @@ -7,5 +10,20 @@ */ public class Main { public static void main(String[] args) { + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; + for (Animal animal : animals) { + if (animal instanceof Cat cat) { + cat.sound(); + } + if (animal instanceof Dog dog) { + dog.sound(); + } + if (animal instanceof Cow cow) { + cow.sound(); + } + if (animal instanceof Unknown unknown) { + unknown.sound(); + } + } } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java new file mode 100644 index 000000000..55e64160f --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java @@ -0,0 +1,7 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public abstract class Animal { + public abstract String getVoice(); + + public abstract void sound(); +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java new file mode 100644 index 000000000..10d1e8bda --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java @@ -0,0 +1,15 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Cat extends Animal { + private final String voice = "meow"; + + @Override + public String getVoice() { + return voice; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java new file mode 100644 index 000000000..5ca81c093 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java @@ -0,0 +1,15 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Cow extends Animal { + private final String voice = "moo"; + + @Override + public String getVoice() { + return voice; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java new file mode 100644 index 000000000..4ab9c0e58 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java @@ -0,0 +1,15 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Dog extends Animal { + private final String voice = "woof"; + + @Override + public String getVoice() { + return voice; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java new file mode 100644 index 000000000..6efed1ebc --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java @@ -0,0 +1,14 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Unknown extends Animal { + + @Override + public String getVoice() { + return "Unknown animal"; + } + + @Override + public void sound() { + System.out.println(getVoice()); + } +} From c09db58735dfbb8aacd88e2af2aa02c9134f170f Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 19 Mar 2025 13:05:30 +0300 Subject: [PATCH 016/131] =?UTF-8?q?lesson=2018=20task1=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1_getClass/Main.java | 15 +++++++++++---- .../task1_getClass/animals/Animal.java | 5 +---- .../task1_getClass/animals/Cat.java | 10 ++-------- .../task1_getClass/animals/Cow.java | 10 ++-------- .../task1_getClass/animals/Dog.java | 10 ++-------- .../task1_getClass/animals/Unknown.java | 8 +------- .../task1_instanceof/Main.java | 6 +++--- .../task1_instanceof/animals/Animal.java | 7 ++++--- .../task1_instanceof/animals/Cat.java | 11 ++--------- .../task1_instanceof/animals/Cow.java | 11 ++--------- .../task1_instanceof/animals/Dog.java | 11 ++--------- .../task1_instanceof/animals/Unknown.java | 8 +------- 12 files changed, 33 insertions(+), 79 deletions(-) diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java index 14c81c270..95729e5ba 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java @@ -9,10 +9,17 @@ */ public class Main { public static void main(String[] args) { - Animal[] animals = new Animal[] {new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; - for(Animal animal : animals) { - animal.getClass(); - animal.sound(); + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; + for (Animal animal : animals) { + if (animal.getClass().equals(Cat.class)) { + ((Cat) animal).meow(); + } else if (animal.getClass().equals(Dog.class)) { + ((Dog) animal).woof(); + } else if (animal.getClass().equals(Cow.class)) { + ((Cow) animal).moo(); + } else { + ((Unknown) animal).sound(); + } } } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java index e71d53109..2c30c1252 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java @@ -1,8 +1,5 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; -public abstract class Animal { +public class Animal { - public abstract String getVoice(); - - public abstract void sound(); } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java index 6f414d333..8786931c9 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java @@ -3,13 +3,7 @@ public class Cat extends Animal{ private final String voice = "meow"; - @Override - public String getVoice() { - return voice; - } - - @Override - public void sound() { - System.out.println(getVoice()); + public void meow() { + System.out.println(voice); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java index fba9062d4..151559dfa 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java @@ -3,13 +3,7 @@ public class Cow extends Animal { private final String voice = "moo"; - @Override - public String getVoice() { - return voice; - } - - @Override - public void sound() { - System.out.println(getVoice()); + public void moo() { + System.out.println(voice); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java index 9f2afdd08..e4e198231 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java @@ -3,13 +3,7 @@ public class Dog extends Animal { private final String voice = "woof"; - @Override - public String getVoice() { - return voice; - } - - @Override - public void sound() { - System.out.println(getVoice()); + public void woof() { + System.out.println(voice); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java index dbfdc3ba4..5a7d3ab4f 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java @@ -2,13 +2,7 @@ public class Unknown extends Animal{ - @Override - public String getVoice() { - return "Unknown animal"; - } - - @Override public void sound() { - System.out.println(getVoice()); + System.out.println("Unknown animal"); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java index 223be5ff4..14894ad71 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java @@ -13,13 +13,13 @@ public static void main(String[] args) { Animal[] animals = new Animal[]{new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; for (Animal animal : animals) { if (animal instanceof Cat cat) { - cat.sound(); + cat.meow(); } if (animal instanceof Dog dog) { - dog.sound(); + dog.woof(); } if (animal instanceof Cow cow) { - cow.sound(); + cow.moo(); } if (animal instanceof Unknown unknown) { unknown.sound(); diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java index 55e64160f..0fe1e2160 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java @@ -1,7 +1,8 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; -public abstract class Animal { - public abstract String getVoice(); +public class Animal { - public abstract void sound(); + public void sound() { + System.out.println(); + } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java index 10d1e8bda..e706a3008 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java @@ -1,15 +1,8 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; public class Cat extends Animal { - private final String voice = "meow"; - @Override - public String getVoice() { - return voice; - } - - @Override - public void sound() { - System.out.println(getVoice()); + public void meow() { + System.out.println("meow"); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java index 5ca81c093..910b82294 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java @@ -1,15 +1,8 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; public class Cow extends Animal { - private final String voice = "moo"; - @Override - public String getVoice() { - return voice; - } - - @Override - public void sound() { - System.out.println(getVoice()); + public void moo() { + System.out.println("moo"); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java index 4ab9c0e58..1e574e42a 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java @@ -1,15 +1,8 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; public class Dog extends Animal { - private final String voice = "woof"; - @Override - public String getVoice() { - return voice; - } - - @Override - public void sound() { - System.out.println(getVoice()); + public void woof() { + System.out.println("woof"); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java index 6efed1ebc..0c55e909d 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java @@ -2,13 +2,7 @@ public class Unknown extends Animal { - @Override - public String getVoice() { - return "Unknown animal"; - } - - @Override public void sound() { - System.out.println(getVoice()); + System.out.println("Unknown animal"); } } From e95273d0cde2662d074e2e6dbc8c5af017f0f9d6 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 19 Mar 2025 13:13:06 +0300 Subject: [PATCH 017/131] =?UTF-8?q?lesson=2018=20task1=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1_getClass/animals/Animal.java | 8 ++++++++ .../task1_getClass/animals/Cat.java | 7 +++++-- .../task1_getClass/animals/Cow.java | 7 +++++-- .../task1_getClass/animals/Dog.java | 7 +++++-- .../task1_getClass/animals/Unknown.java | 6 +++++- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java index 2c30c1252..ed2965c2f 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java @@ -1,5 +1,13 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; public class Animal { + protected final String sound; + public Animal(String sound) { + this.sound = sound; + } + + protected void sound() { + System.out.println(sound); + } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java index 8786931c9..c552b70b9 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java @@ -1,9 +1,12 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; public class Cat extends Animal{ - private final String voice = "meow"; + + public Cat() { + super("meow"); + } public void meow() { - System.out.println(voice); + System.out.println(sound); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java index 151559dfa..901f9873a 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java @@ -1,9 +1,12 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; public class Cow extends Animal { - private final String voice = "moo"; + + public Cow() { + super("moo"); + } public void moo() { - System.out.println(voice); + System.out.println(sound); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java index e4e198231..b8cde7296 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java @@ -1,9 +1,12 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; public class Dog extends Animal { - private final String voice = "woof"; + + public Dog() { + super("woof"); + } public void woof() { - System.out.println(voice); + System.out.println(sound); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java index 5a7d3ab4f..8f1838f24 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java @@ -2,7 +2,11 @@ public class Unknown extends Animal{ + public Unknown() { + super("Unknown animal"); + } + public void sound() { - System.out.println("Unknown animal"); + System.out.println(sound); } } From bdaa49830d12dbe7046cd732fbdd67d44f4ee524 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 19 Mar 2025 13:23:01 +0300 Subject: [PATCH 018/131] =?UTF-8?q?lesson=2018=20task1=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1_getClass/Main.java | 4 ++-- .../task1_getClass/animals/Unknown.java | 12 ------------ .../task1_instanceof/Main.java | 13 +++++-------- .../task1_instanceof/animals/Animal.java | 5 +++++ .../task1_instanceof/animals/Cat.java | 6 +++++- .../task1_instanceof/animals/Cow.java | 6 +++++- .../task1_instanceof/animals/Dog.java | 6 +++++- .../task1_instanceof/animals/Unknown.java | 8 -------- 8 files changed, 27 insertions(+), 33 deletions(-) delete mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java delete mode 100644 src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java index 95729e5ba..12e59fc96 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/Main.java @@ -9,7 +9,7 @@ */ public class Main { public static void main(String[] args) { - Animal[] animals = new Animal[]{new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog(), new Cow()}; for (Animal animal : animals) { if (animal.getClass().equals(Cat.class)) { ((Cat) animal).meow(); @@ -18,7 +18,7 @@ public static void main(String[] args) { } else if (animal.getClass().equals(Cow.class)) { ((Cow) animal).moo(); } else { - ((Unknown) animal).sound(); + System.out.println("Unknown animal"); } } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java deleted file mode 100644 index 8f1838f24..000000000 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Unknown.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; - -public class Unknown extends Animal{ - - public Unknown() { - super("Unknown animal"); - } - - public void sound() { - System.out.println(sound); - } -} diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java index 14894ad71..494adc8d6 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/Main.java @@ -10,19 +10,16 @@ */ public class Main { public static void main(String[] args) { - Animal[] animals = new Animal[]{new Cat(), new Cow(), new Unknown(), new Dog(), new Cow()}; + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog(), new Cow()}; for (Animal animal : animals) { if (animal instanceof Cat cat) { cat.meow(); - } - if (animal instanceof Dog dog) { + } else if (animal instanceof Dog dog) { dog.woof(); - } - if (animal instanceof Cow cow) { + } else if (animal instanceof Cow cow) { cow.moo(); - } - if (animal instanceof Unknown unknown) { - unknown.sound(); + } else { + System.out.println("Unknown animal"); } } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java index 0fe1e2160..6fb102725 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java @@ -1,6 +1,11 @@ package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; public class Animal { + protected final String sound; + + public Animal(String sound) { + this.sound = sound; + } public void sound() { System.out.println(); diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java index e706a3008..170c1721c 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java @@ -2,7 +2,11 @@ public class Cat extends Animal { + public Cat() { + super("meow"); + } + public void meow() { - System.out.println("meow"); + System.out.println(sound); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java index 910b82294..b15f76922 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java @@ -2,7 +2,11 @@ public class Cow extends Animal { + public Cow() { + super("moo"); + } + public void moo() { - System.out.println("moo"); + System.out.println(sound); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java index 1e574e42a..adf0bf9a2 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java @@ -2,7 +2,11 @@ public class Dog extends Animal { + public Dog() { + super("woof"); + } + public void woof() { - System.out.println("woof"); + System.out.println(sound); } } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java deleted file mode 100644 index 0c55e909d..000000000 --- a/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Unknown.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; - -public class Unknown extends Animal { - - public void sound() { - System.out.println("Unknown animal"); - } -} From e061808fe54369444aaf40a0e6aefe951b4ae0a0 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 20 Mar 2025 14:01:37 +0300 Subject: [PATCH 019/131] lesson 19 --- .../walking/lesson19_object_methods/Main.java | 29 +++++++++ .../lesson19_object_methods/autos/Auto.java | 64 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 src/com/walking/lesson19_object_methods/autos/Auto.java diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index efef54d5d..1bfb25f89 100644 --- a/src/com/walking/lesson19_object_methods/Main.java +++ b/src/com/walking/lesson19_object_methods/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson19_object_methods; +import com.walking.lesson19_object_methods.autos.Auto; + +import java.util.Scanner; + /** * Реализуйте класс «Машина». Поля допустимо выбрать на свое усмотрение, но необходимо, * чтобы по ним можно было однозначно идентифицировать каждую машину. @@ -14,5 +18,30 @@ */ public class Main { public static void main(String[] args) { + + Auto[] autos = new Auto[6]; + autos[0] = new Auto("Audi", "Печкин Ф.Б.", "уе777к"); + autos[1] = new Auto("BMW", "Борисов Ю.А.", "ос025р"); + autos[2] = new Auto("Ford", "Снегирь Ю.В.", "мр666м"); + autos[3] = new Auto("Bentley", "Белова Д.М.", "ра345з"); + autos[4] = new Auto("Ferrari", "Сергеев К.Л.", "уе999з"); + autos[5] = new Auto("Москвич", "Попов А.Д.", "ар832с"); + + Scanner in = new Scanner(System.in); + System.out.print("Марка машины: "); + String make = in.nextLine(); + System.out.print("ФИО владельца: "); + String owner = in.nextLine(); + System.out.print("Номер машины: "); + String number = in.nextLine(); + + Auto car = new Auto(make, owner, number); + car = car.findAuto(autos); + + if (car == null) { + System.out.println("Машина не найдена!"); + } else { + System.out.println(car.toString()); + } } } diff --git a/src/com/walking/lesson19_object_methods/autos/Auto.java b/src/com/walking/lesson19_object_methods/autos/Auto.java new file mode 100644 index 000000000..8c0347522 --- /dev/null +++ b/src/com/walking/lesson19_object_methods/autos/Auto.java @@ -0,0 +1,64 @@ +package com.walking.lesson19_object_methods.autos; + +import java.util.Objects; + +public class Auto { + private final String make; + private final String owner; + private final String number; + + public Auto(String make, String owner, String number) { + this.make = make; + this.owner = owner; + this.number = number; + } + + public Auto findAuto(Auto[] autos) { + for (Auto auto : autos) { + if (this.equals(auto)) { + return auto; + } + } + return null; + } + + @Override + public String toString() { + return "Машина марки " + make + ", владелец: " + owner + ", номер: " + number; + } + + @Override + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + Auto auto = (Auto) car; + if (!this.make.equals(auto.make)) { + return false; + } + if (!this.owner.equals(auto.owner)) { + return false; + } + + return this.number.equals(auto.number); + } + + @Override + public int hashCode() { + int result = make != null ? make.hashCode() : 0; + result = 11 * result + (owner != null ? owner.hashCode() : 0); + result = 11 * result + (number != null ? number.hashCode() : 0); + + return result; + } + +} From 45633b9224938957ef60f8308c8dee863aeddee0 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 20 Mar 2025 14:05:04 +0300 Subject: [PATCH 020/131] lesson 19 --- src/com/walking/lesson19_object_methods/Main.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index 1bfb25f89..f9acadf31 100644 --- a/src/com/walking/lesson19_object_methods/Main.java +++ b/src/com/walking/lesson19_object_methods/Main.java @@ -41,7 +41,8 @@ public static void main(String[] args) { if (car == null) { System.out.println("Машина не найдена!"); } else { - System.out.println(car.toString()); + System.out.println(car); + System.out.println(car.hashCode()); } } } From b852b24edcf8eb4463fca781a555f48ca0abeb90 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 20 Mar 2025 14:08:10 +0300 Subject: [PATCH 021/131] lesson 19 --- src/com/walking/lesson19_object_methods/autos/Auto.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/com/walking/lesson19_object_methods/autos/Auto.java b/src/com/walking/lesson19_object_methods/autos/Auto.java index 8c0347522..ad7c80892 100644 --- a/src/com/walking/lesson19_object_methods/autos/Auto.java +++ b/src/com/walking/lesson19_object_methods/autos/Auto.java @@ -1,7 +1,5 @@ package com.walking.lesson19_object_methods.autos; -import java.util.Objects; - public class Auto { private final String make; private final String owner; From 0ce340c0c050b604095489564d2c2de0a48e3e9f Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 21 Mar 2025 23:51:36 +0300 Subject: [PATCH 022/131] lesson 19 --- src/com/walking/lesson19_object_methods/Main.java | 3 +-- src/com/walking/lesson19_object_methods/autos/Auto.java | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index f9acadf31..e07cffba0 100644 --- a/src/com/walking/lesson19_object_methods/Main.java +++ b/src/com/walking/lesson19_object_methods/Main.java @@ -36,9 +36,8 @@ public static void main(String[] args) { String number = in.nextLine(); Auto car = new Auto(make, owner, number); - car = car.findAuto(autos); - if (car == null) { + if (!car.findAuto(autos)) { System.out.println("Машина не найдена!"); } else { System.out.println(car); diff --git a/src/com/walking/lesson19_object_methods/autos/Auto.java b/src/com/walking/lesson19_object_methods/autos/Auto.java index ad7c80892..fefe0c111 100644 --- a/src/com/walking/lesson19_object_methods/autos/Auto.java +++ b/src/com/walking/lesson19_object_methods/autos/Auto.java @@ -11,13 +11,13 @@ public Auto(String make, String owner, String number) { this.number = number; } - public Auto findAuto(Auto[] autos) { + public boolean findAuto(Auto[] autos) { for (Auto auto : autos) { if (this.equals(auto)) { - return auto; + return true; } } - return null; + return false; } @Override From 364f204118cab5094c4769608ed1f92338358427 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 25 Mar 2025 12:57:03 +0300 Subject: [PATCH 023/131] =?UTF-8?q?lesson=2014=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson14_polymorphism/task1/Main.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 53b61a759..2656abd0f 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -31,17 +31,18 @@ public static void main(String[] args) { return; } - RegularFigure figure = new RegularFigure(length); + RegularFigure figure = getFigure(figureType, length); + System.out.println(figure.getFigure()); + } + + private static RegularFigure getFigure(String figureType, int length) { switch (figureType.toLowerCase()) { case Triangle.NAME: - figure = new Triangle(figure.length); - break; + return new Triangle(length); case Square.NAME: - figure = new Square(figure.length); - break; + return new Square(length); } - - System.out.println(figure.getFigure()); + return new RegularFigure(length); } } From 3f65c1a75c16ce109ff6fcd6c0d1ab3900c5b65b Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 25 Mar 2025 13:05:44 +0300 Subject: [PATCH 024/131] =?UTF-8?q?lesson=2014=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1_abstract_class/figures/RegularFigure.java | 5 ++++- .../task1_abstract_class/figures/Square.java | 6 +++--- .../task1_abstract_class/figures/Triangle.java | 8 ++++---- .../task2/Main.java | 12 ++++++------ .../task2/greet/Goodbye.java | 10 ++++++++++ .../task2/greet/Greeting.java | 7 +++++++ .../task2/greet/Hello.java | 10 ++++++++++ .../task2/greet/How.java | 11 +++++++++++ .../task2/printer/Goodbye.java | 9 --------- .../task2/printer/Hello.java | 9 --------- .../task2/printer/How.java | 10 ---------- .../task2/printer/Printer.java | 7 ------- 12 files changed, 55 insertions(+), 49 deletions(-) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/greet/Goodbye.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/greet/Greeting.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/greet/Hello.java create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/greet/How.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java delete mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java index 4c31831af..177f8fa95 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java @@ -3,7 +3,7 @@ public abstract class RegularFigure { protected final String SPACE = " "; protected final String NEXT_LINE_SYMBOL = "\n"; - public final int length; + private final int length; protected RegularFigure(int length) { this.length = length; @@ -11,4 +11,7 @@ protected RegularFigure(int length) { public abstract String getFigure(); + public int getLength() { + return length; + } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java index d4fdd3b74..0a15ce1f4 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Square.java @@ -13,17 +13,17 @@ public Square(int length) { @Override public String getFigure() { String square = getHorizontalSide(); - for (int i = 0; i < length - 2; i++) { + for (int i = 0; i < getLength() - 2; i++) { square += getVerticalSide(); } return square + getHorizontalSide(); } private String getHorizontalSide() { - return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + return SPACE + HORIZONTAL.repeat(getLength() - 2) + SPACE + NEXT_LINE_SYMBOL; } private String getVerticalSide() { - return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + return VERTICAL + SPACE.repeat(getLength() - 2) + VERTICAL + NEXT_LINE_SYMBOL; } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java index 4501586f1..af4bd897e 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/Triangle.java @@ -18,15 +18,15 @@ public String getFigure() { } private String getBottomSide() { - return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + return LEFT_SIDE + BOTTOM_SIDE.repeat(getLength()) + RIGHT_SIDE; } private String getTriangle() { - int k = length / 2; - int j = length % 2; + int k = getLength() / 2; + int j = getLength() % 2; String triangle = ""; - for (int i = 0; i < length / 2; i++) { + for (int i = 0; i < getLength() / 2; i++) { triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; k--; j += 2; diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java index 843a00a2d..3cf7eb578 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java @@ -1,9 +1,9 @@ package com.walking.lesson16_abstract_class_interface.task2; -import com.walking.lesson16_abstract_class_interface.task2.printer.Goodbye; -import com.walking.lesson16_abstract_class_interface.task2.printer.Hello; -import com.walking.lesson16_abstract_class_interface.task2.printer.How; -import com.walking.lesson16_abstract_class_interface.task2.printer.Printer; +import com.walking.lesson16_abstract_class_interface.task2.greet.Goodbye; +import com.walking.lesson16_abstract_class_interface.task2.greet.Hello; +import com.walking.lesson16_abstract_class_interface.task2.greet.How; +import com.walking.lesson16_abstract_class_interface.task2.greet.Greeting; import java.util.Scanner; @@ -18,7 +18,7 @@ public static void main(String[] args) { System.out.print("Enter message: "); String message = in.nextLine(); - Printer answer; + Greeting answer; switch (message) { case "Hi": answer = new Hello(); @@ -34,7 +34,7 @@ public static void main(String[] args) { } if (answer != null) { - System.out.println(answer.print()); + System.out.println(answer.greet()); } else { System.out.println("Unknown message"); } diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/greet/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Goodbye.java new file mode 100644 index 000000000..8ad592b3f --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Goodbye.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task2.greet; + +public class Goodbye implements Greeting { + final static String RESPOND = "Goodbye"; + + @Override + public String greet() { + return RESPOND; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/greet/Greeting.java b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Greeting.java new file mode 100644 index 000000000..543b3fbf2 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Greeting.java @@ -0,0 +1,7 @@ +package com.walking.lesson16_abstract_class_interface.task2.greet; + +public interface Greeting { + + String greet(); + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/greet/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Hello.java new file mode 100644 index 000000000..8eab8a8f0 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Hello.java @@ -0,0 +1,10 @@ +package com.walking.lesson16_abstract_class_interface.task2.greet; + +public class Hello implements Greeting { + final static String RESPOND = "Hello"; + + @Override + public String greet() { + return RESPOND; + } +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/greet/How.java b/src/com/walking/lesson16_abstract_class_interface/task2/greet/How.java new file mode 100644 index 000000000..396b750ce --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/greet/How.java @@ -0,0 +1,11 @@ +package com.walking.lesson16_abstract_class_interface.task2.greet; + +public class How implements Greeting { + final static String RESPOND = "How are you doing"; + + @Override + public String greet() { + return RESPOND; + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java deleted file mode 100644 index 73a358055..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Goodbye.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2.printer; - -public class Goodbye implements Printer { - final static String RESPOND = "Goodbye"; - - public String print() { - return RESPOND; - } -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java deleted file mode 100644 index 63dffc77c..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Hello.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2.printer; - -public class Hello implements Printer { - final static String RESPOND = "Hello"; - - public String print() { - return RESPOND; - } -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java deleted file mode 100644 index a469d3bc3..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/How.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2.printer; - -public class How implements Printer { - final static String RESPOND = "How are you doing"; - - public String print() { - return RESPOND; - } - -} diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java b/src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java deleted file mode 100644 index e6b3dad26..000000000 --- a/src/com/walking/lesson16_abstract_class_interface/task2/printer/Printer.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson16_abstract_class_interface.task2.printer; - -public interface Printer { - - String print(); - -} From 1975241bf7ee293e6382764bddc2ebcf97fe387d Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 25 Mar 2025 13:11:44 +0300 Subject: [PATCH 025/131] =?UTF-8?q?lesson=2016=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task2/Main.java | 33 ++++++------------- .../task2/greet/Unknown.java | 8 +++++ 2 files changed, 18 insertions(+), 23 deletions(-) create mode 100644 src/com/walking/lesson16_abstract_class_interface/task2/greet/Unknown.java diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java index 3cf7eb578..d5d4113ea 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task2/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task2/Main.java @@ -1,9 +1,6 @@ package com.walking.lesson16_abstract_class_interface.task2; -import com.walking.lesson16_abstract_class_interface.task2.greet.Goodbye; -import com.walking.lesson16_abstract_class_interface.task2.greet.Hello; -import com.walking.lesson16_abstract_class_interface.task2.greet.How; -import com.walking.lesson16_abstract_class_interface.task2.greet.Greeting; +import com.walking.lesson16_abstract_class_interface.task2.greet.*; import java.util.Scanner; @@ -18,25 +15,15 @@ public static void main(String[] args) { System.out.print("Enter message: "); String message = in.nextLine(); - Greeting answer; - switch (message) { - case "Hi": - answer = new Hello(); - break; - case "Bye": - answer = new Goodbye(); - break; - case "How are you": - answer = new How(); - break; - default: - answer = null; - } + System.out.println(getGreeting(message)); + } - if (answer != null) { - System.out.println(answer.greet()); - } else { - System.out.println("Unknown message"); - } + private static Greeting getGreeting(String message) { + return switch (message) { + case "Hi" -> new Hello(); + case "Bye" -> new Goodbye(); + case "How are you" -> new How(); + default -> new Unknown(); + }; } } diff --git a/src/com/walking/lesson16_abstract_class_interface/task2/greet/Unknown.java b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Unknown.java new file mode 100644 index 000000000..098ecf510 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task2/greet/Unknown.java @@ -0,0 +1,8 @@ +package com.walking.lesson16_abstract_class_interface.task2.greet; + +public class Unknown implements Greeting { + @Override + public String greet() { + return "Unknown message"; + } +} From ee64b502326af1589f26390f9038a7fceaa1d79c Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 25 Mar 2025 13:22:04 +0300 Subject: [PATCH 026/131] =?UTF-8?q?lesson=2017=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson17_enum/task1/Main.java | 4 +-- .../{GreetingTypes.java => GreetingType.java} | 8 ++--- .../lesson17_enum/task2/animals/Animal.java | 4 ++- .../task3/figure/RegularFigure.java | 29 +++++++++++-------- 4 files changed, 26 insertions(+), 19 deletions(-) rename src/com/walking/lesson17_enum/task1/greetings/{GreetingTypes.java => GreetingType.java} (76%) diff --git a/src/com/walking/lesson17_enum/task1/Main.java b/src/com/walking/lesson17_enum/task1/Main.java index 2bd1ca691..8c028c396 100644 --- a/src/com/walking/lesson17_enum/task1/Main.java +++ b/src/com/walking/lesson17_enum/task1/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson17_enum.task1; -import com.walking.lesson17_enum.task1.greetings.GreetingTypes; +import com.walking.lesson17_enum.task1.greetings.GreetingType; import java.util.Scanner; @@ -18,7 +18,7 @@ public static void main(String[] args) { System.out.print("Enter message: "); String greeting = in.nextLine(); - GreetingTypes greet = GreetingTypes.findGreetingType(greeting); + GreetingType greet = GreetingType.findGreetingType(greeting); System.out.println(greet.getRespond()); } diff --git a/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java b/src/com/walking/lesson17_enum/task1/greetings/GreetingType.java similarity index 76% rename from src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java rename to src/com/walking/lesson17_enum/task1/greetings/GreetingType.java index acf089c5c..4d124f6f5 100644 --- a/src/com/walking/lesson17_enum/task1/greetings/GreetingTypes.java +++ b/src/com/walking/lesson17_enum/task1/greetings/GreetingType.java @@ -1,6 +1,6 @@ package com.walking.lesson17_enum.task1.greetings; -public enum GreetingTypes { +public enum GreetingType { HELLO("Hi", "Hello"), GOODBYE("Bye", "Goodbye"), @@ -10,17 +10,17 @@ public enum GreetingTypes { private final String greeting; private final String respond; - GreetingTypes(String greeting, String respond) { + GreetingType(String greeting, String respond) { this.greeting = greeting; this.respond = respond; } - public static GreetingTypes findGreetingType(String greeting) { + public static GreetingType findGreetingType(String greeting) { if (greeting == null) { return UNKNOWN; } - for (GreetingTypes type : GreetingTypes.values()) { + for (GreetingType type : GreetingType.values()) { if (greeting.equals(type.greeting)) { return type; } diff --git a/src/com/walking/lesson17_enum/task2/animals/Animal.java b/src/com/walking/lesson17_enum/task2/animals/Animal.java index 0a9212e9f..9c9e1c650 100644 --- a/src/com/walking/lesson17_enum/task2/animals/Animal.java +++ b/src/com/walking/lesson17_enum/task2/animals/Animal.java @@ -1,7 +1,9 @@ package com.walking.lesson17_enum.task2.animals; public enum Animal { - CAT("meow"), Dog("woof"), Cow("moo"); + CAT("meow"), + DOG("woof"), + COW("moo"); private final String sound; diff --git a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java index 3560444fd..184ddc2f6 100644 --- a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java +++ b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java @@ -4,28 +4,28 @@ public enum RegularFigure { TRIANGLE("треугольник"){ public String getFigure() { - int k = length / 2; - int j = length % 2; + int k = getLength() / 2; + int j = getLength() % 2; String triangle = ""; - for (int i = 0; i < length / 2; i++) { - triangle += SPACE.repeat(k) + LEFT_SIDE_TRIANGLE + SPACE.repeat(j) + RIGHT_SIDE_TRIANGLE + NEXT_LINE_SYMBOL; + for (int i = 0; i < getLength() / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE_TRIANGLE + SPACE.repeat(j) + RIGHT_SIDE_TRIANGLE + NEXT_LINE; k--; j += 2; } - triangle += LEFT_SIDE_TRIANGLE + HORIZONTAL_SIDE.repeat(length) + RIGHT_SIDE_TRIANGLE; + triangle += LEFT_SIDE_TRIANGLE + HORIZONTAL_SIDE.repeat(getLength()) + RIGHT_SIDE_TRIANGLE; return triangle; } }, SQUARE("квадрат") { public String getFigure() { - String square = SPACE + HORIZONTAL_SQUARE.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; - for (int i = 0; i < length - 2; i++) { - square += VERTICAL_SQUARE + SPACE.repeat(length - 2) + VERTICAL_SQUARE + NEXT_LINE_SYMBOL; + String square = SPACE + HORIZONTAL_SQUARE.repeat(getLength() - 2) + SPACE + NEXT_LINE; + for (int i = 0; i < getLength() - 2; i++) { + square += VERTICAL_SQUARE + SPACE.repeat(getLength() - 2) + VERTICAL_SQUARE + NEXT_LINE; } - square += SPACE + HORIZONTAL_SQUARE.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + square += SPACE + HORIZONTAL_SQUARE.repeat(getLength() - 2) + SPACE + NEXT_LINE; return square; } }, @@ -37,14 +37,15 @@ public String getFigure() { }; private static final String SPACE = " "; - private static final String NEXT_LINE_SYMBOL = "\n"; + private static final String NEXT_LINE = "\n"; private static final String RIGHT_SIDE_TRIANGLE = "\\"; private static final String LEFT_SIDE_TRIANGLE = "/"; private static final String HORIZONTAL_SIDE = "_"; private static final String HORIZONTAL_SQUARE = "-"; private static final String VERTICAL_SQUARE = "|"; - final String name; - int length; + private final String name; + + private int length; RegularFigure(String name) { this.name = name; @@ -68,6 +69,10 @@ public void setLength(int length) { this.length = length; } + public int getLength() { + return length; + } + public String getName() { return name; } From cf959f27a43f4f23d738ff9e9715c9e58ae7dfdf Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 31 Mar 2025 15:35:53 +0300 Subject: [PATCH 027/131] lesson 20, task 1 --- .../task1_catchException/Main.java | 38 +++++++++++++++++++ .../task1_catchException/files/File.java | 30 +++++++++++++++ .../files/FileNotFoundException.java | 7 ++++ .../task1_catchException/files/FileType.java | 21 ++++++++++ 4 files changed, 96 insertions(+) create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/files/File.java create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java create mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java index c59fa62d4..ceda11873 100644 --- a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson20_exceptions.task1_catchException; +import com.walking.lesson20_exceptions.task1_catchException.files.File; +import com.walking.lesson20_exceptions.task1_catchException.files.FileNotFoundException; + +import java.util.Scanner; + +import static com.walking.lesson20_exceptions.task1_catchException.files.FileType.*; + /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. *

@@ -15,5 +22,36 @@ */ public class Main { public static void main(String[] args) { + File[] files = new File[8]; + files[0] = new File("Девятый вал", "109 КБ", PICTURE); + files[1] = new File("Шрек 2", "128 МБ", VIDEO); + files[2] = new File("Три товарища", "895 КБ", TEXT); + files[3] = new File("Эфир", "7.4 МБ", AUDIO); + files[4] = new File("Пока течёт река", "930 КБ", TEXT); + files[5] = new File("М", "8 МБ", AUDIO); + files[6] = new File("Душа", "134 МБ", VIDEO); + files[7] = new File("Смешной мем", "99 КБ", PICTURE); + + Scanner in = new Scanner(System.in); + System.out.print("Введите название файла: "); + String name = in.nextLine(); + + try{ + File file = findFile(files, name); + System.out.println(file); + } + catch (FileNotFoundException ex) { + System.out.println(ex.getMessage()); + } + + } + + public static File findFile(File[] files, String name) throws FileNotFoundException { + for(File file : files) { + if(name.equals(file.getName())) { + return file; + } + } + throw new FileNotFoundException("Файл не найден!"); } } diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/files/File.java b/src/com/walking/lesson20_exceptions/task1_catchException/files/File.java new file mode 100644 index 000000000..21a5ebdc9 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/files/File.java @@ -0,0 +1,30 @@ +package com.walking.lesson20_exceptions.task1_catchException.files; + +public class File { + private final String name; + private final String size; + private final FileType type; + + public File(String name, String size, FileType type) { + this.name = name; + this.size = size; + this.type = type; + } + + public String getName() { + return name; + } + + public String getSize() { + return size; + } + + public FileType getType() { + return type; + } + + @Override + public String toString() { + return "Название файла: " + name + ".\nРазмер файла: " + size + ".\nТип файла: " + type.getName() + "."; + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java new file mode 100644 index 000000000..7ee2ff55b --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task1_catchException.files; + +public class FileNotFoundException extends Exception{ + public FileNotFoundException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java b/src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java new file mode 100644 index 000000000..5fb387cc9 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java @@ -0,0 +1,21 @@ +package com.walking.lesson20_exceptions.task1_catchException.files; + +public enum FileType { + TEXT("текст"), + VIDEO("видеозапись"), + AUDIO("аудиозапись"), + PICTURE("изображение"); + + private final String name; + + FileType(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} + + + From 581d8eb96b5c647b158e5f7a470a7fa57d77095c Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 31 Mar 2025 16:00:18 +0300 Subject: [PATCH 028/131] lesson 20, task 1 --- .../walking/lesson20_exceptions/task1_catchException/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java index ceda11873..b15ee4318 100644 --- a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java @@ -52,6 +52,6 @@ public static File findFile(File[] files, String name) throws FileNotFoundExcept return file; } } - throw new FileNotFoundException("Файл не найден!"); + throw new FileNotFoundException("Искомый файл не существует."); } } From 455de073ccfabe91978304eda828225c76d828bd Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 31 Mar 2025 17:31:21 +0300 Subject: [PATCH 029/131] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson14_polymorphism/task1/Main.java | 12 ++-- .../task1/figure/RegularFigure.java | 5 +- .../task1/figure/Square.java | 6 +- .../task1/figure/Triangle.java | 8 +-- src/com/walking/lesson17_enum/task3/Main.java | 4 +- .../task3/figure/RegularFigure.java | 37 +++++------ .../task1_getClass/animals/Cat.java | 2 +- .../walking/lesson19_object_methods/Main.java | 29 ++++++--- .../lesson19_object_methods/autos/Auto.java | 62 ------------------- .../lesson19_object_methods/autos/Car.java | 47 ++++++++++++++ 10 files changed, 99 insertions(+), 113 deletions(-) delete mode 100644 src/com/walking/lesson19_object_methods/autos/Auto.java create mode 100644 src/com/walking/lesson19_object_methods/autos/Car.java diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 2656abd0f..e4ee4acbf 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -37,12 +37,10 @@ public static void main(String[] args) { } private static RegularFigure getFigure(String figureType, int length) { - switch (figureType.toLowerCase()) { - case Triangle.NAME: - return new Triangle(length); - case Square.NAME: - return new Square(length); - } - return new RegularFigure(length); + return switch (figureType.toLowerCase()) { + case Triangle.NAME -> new Triangle(length); + case Square.NAME -> new Square(length); + default -> new RegularFigure(length); + }; } } diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java b/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java index 06aaa43d5..2b8a21022 100644 --- a/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java +++ b/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java @@ -1,7 +1,7 @@ package com.walking.lesson14_polymorphism.task1.figure; public class RegularFigure { - public final int length; + private final int length; public RegularFigure(int length) { this.length = length; @@ -12,4 +12,7 @@ public String getFigure() { } + public int getLength() { + return length; + } } diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/Square.java b/src/com/walking/lesson14_polymorphism/task1/figure/Square.java index 7047c3337..003fcfcc0 100644 --- a/src/com/walking/lesson14_polymorphism/task1/figure/Square.java +++ b/src/com/walking/lesson14_polymorphism/task1/figure/Square.java @@ -14,17 +14,17 @@ public Square(int length) { @Override public String getFigure() { String square = getHorizontalSide(); - for (int i = 0; i < length - 2; i++) { + for (int i = 0; i < getLength() - 2; i++) { square += getVerticalSide(); } return square + getHorizontalSide(); } private String getHorizontalSide() { - return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + "\n"; + return SPACE + HORIZONTAL.repeat(getLength() - 2) + SPACE + "\n"; } private String getVerticalSide() { - return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + "\n"; + return VERTICAL + SPACE.repeat(getLength() - 2) + VERTICAL + "\n"; } } diff --git a/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java b/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java index 87109bd06..7be11199a 100644 --- a/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java +++ b/src/com/walking/lesson14_polymorphism/task1/figure/Triangle.java @@ -18,15 +18,15 @@ public String getFigure() { } private String getBottomSide() { - return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + return LEFT_SIDE + BOTTOM_SIDE.repeat(getLength()) + RIGHT_SIDE; } private String getTriangle() { - int k = length / 2; - int j = length % 2; + int k = getLength() / 2; + int j = getLength() % 2; String triangle = ""; - for (int i = 0; i < length / 2; i++) { + for (int i = 0; i < getLength() / 2; i++) { triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + "\n"; k--; j += 2; diff --git a/src/com/walking/lesson17_enum/task3/Main.java b/src/com/walking/lesson17_enum/task3/Main.java index 04b8d799d..135289954 100644 --- a/src/com/walking/lesson17_enum/task3/Main.java +++ b/src/com/walking/lesson17_enum/task3/Main.java @@ -19,8 +19,6 @@ public static void main(String[] args) { int length = in.nextInt(); RegularFigure figure = RegularFigure.getFigureByName(name); - figure.setLength(length); - - System.out.println(figure.getFigure()); + System.out.println(figure.getFigure(length)); } } diff --git a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java index 184ddc2f6..64489503f 100644 --- a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java +++ b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java @@ -3,35 +3,38 @@ public enum RegularFigure { TRIANGLE("треугольник"){ - public String getFigure() { - int k = getLength() / 2; - int j = getLength() % 2; + @Override + public String getFigure(int length) { + int k = length / 2; + int j = length % 2; String triangle = ""; - for (int i = 0; i < getLength() / 2; i++) { + for (int i = 0; i < length / 2; i++) { triangle += SPACE.repeat(k) + LEFT_SIDE_TRIANGLE + SPACE.repeat(j) + RIGHT_SIDE_TRIANGLE + NEXT_LINE; k--; j += 2; } - triangle += LEFT_SIDE_TRIANGLE + HORIZONTAL_SIDE.repeat(getLength()) + RIGHT_SIDE_TRIANGLE; + triangle += LEFT_SIDE_TRIANGLE + HORIZONTAL_SIDE.repeat(length) + RIGHT_SIDE_TRIANGLE; return triangle; } }, SQUARE("квадрат") { - public String getFigure() { - String square = SPACE + HORIZONTAL_SQUARE.repeat(getLength() - 2) + SPACE + NEXT_LINE; - for (int i = 0; i < getLength() - 2; i++) { - square += VERTICAL_SQUARE + SPACE.repeat(getLength() - 2) + VERTICAL_SQUARE + NEXT_LINE; + @Override + public String getFigure(int length) { + String square = SPACE + HORIZONTAL_SQUARE.repeat(length - 2) + SPACE + NEXT_LINE; + for (int i = 0; i < length - 2; i++) { + square += VERTICAL_SQUARE + SPACE.repeat(length - 2) + VERTICAL_SQUARE + NEXT_LINE; } - square += SPACE + HORIZONTAL_SQUARE.repeat(getLength() - 2) + SPACE + NEXT_LINE; + square += SPACE + HORIZONTAL_SQUARE.repeat(length - 2) + SPACE + NEXT_LINE; return square; } }, UNKNOWN(null) { - public String getFigure() { + @Override + public String getFigure(int length) { return "Неизвестная фигура"; } }; @@ -45,8 +48,6 @@ public String getFigure() { private static final String VERTICAL_SQUARE = "|"; private final String name; - private int length; - RegularFigure(String name) { this.name = name; } @@ -65,17 +66,9 @@ public static RegularFigure getFigureByName(String name) { return UNKNOWN; } - public void setLength(int length) { - this.length = length; - } - - public int getLength() { - return length; - } - public String getName() { return name; } - public abstract String getFigure(); + public abstract String getFigure(int length); } diff --git a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java index c552b70b9..b6769a6cd 100644 --- a/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java @@ -1,6 +1,6 @@ package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; -public class Cat extends Animal{ +public class Cat extends Animal { public Cat() { super("meow"); diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index e07cffba0..b3c8defe2 100644 --- a/src/com/walking/lesson19_object_methods/Main.java +++ b/src/com/walking/lesson19_object_methods/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson19_object_methods; -import com.walking.lesson19_object_methods.autos.Auto; +import com.walking.lesson19_object_methods.autos.Car; import java.util.Scanner; @@ -19,13 +19,13 @@ public class Main { public static void main(String[] args) { - Auto[] autos = new Auto[6]; - autos[0] = new Auto("Audi", "Печкин Ф.Б.", "уе777к"); - autos[1] = new Auto("BMW", "Борисов Ю.А.", "ос025р"); - autos[2] = new Auto("Ford", "Снегирь Ю.В.", "мр666м"); - autos[3] = new Auto("Bentley", "Белова Д.М.", "ра345з"); - autos[4] = new Auto("Ferrari", "Сергеев К.Л.", "уе999з"); - autos[5] = new Auto("Москвич", "Попов А.Д.", "ар832с"); + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); Scanner in = new Scanner(System.in); System.out.print("Марка машины: "); @@ -35,13 +35,22 @@ public static void main(String[] args) { System.out.print("Номер машины: "); String number = in.nextLine(); - Auto car = new Auto(make, owner, number); + Car car = new Car(make, owner, number); - if (!car.findAuto(autos)) { + if (!carExist(cars, car)) { System.out.println("Машина не найдена!"); } else { System.out.println(car); System.out.println(car.hashCode()); } } + + public static boolean carExist(Car[] cars, Car car) { + for (Car car1 : cars) { + if (car1.equals(car)) { + return true; + } + } + return false; + } } diff --git a/src/com/walking/lesson19_object_methods/autos/Auto.java b/src/com/walking/lesson19_object_methods/autos/Auto.java deleted file mode 100644 index fefe0c111..000000000 --- a/src/com/walking/lesson19_object_methods/autos/Auto.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.walking.lesson19_object_methods.autos; - -public class Auto { - private final String make; - private final String owner; - private final String number; - - public Auto(String make, String owner, String number) { - this.make = make; - this.owner = owner; - this.number = number; - } - - public boolean findAuto(Auto[] autos) { - for (Auto auto : autos) { - if (this.equals(auto)) { - return true; - } - } - return false; - } - - @Override - public String toString() { - return "Машина марки " + make + ", владелец: " + owner + ", номер: " + number; - } - - @Override - public boolean equals(Object car) { - if (this == car) { - return true; - } - - if (car == null) { - return false; - } - - if (!getClass().equals(car.getClass())) { - return false; - } - - Auto auto = (Auto) car; - if (!this.make.equals(auto.make)) { - return false; - } - if (!this.owner.equals(auto.owner)) { - return false; - } - - return this.number.equals(auto.number); - } - - @Override - public int hashCode() { - int result = make != null ? make.hashCode() : 0; - result = 11 * result + (owner != null ? owner.hashCode() : 0); - result = 11 * result + (number != null ? number.hashCode() : 0); - - return result; - } - -} diff --git a/src/com/walking/lesson19_object_methods/autos/Car.java b/src/com/walking/lesson19_object_methods/autos/Car.java new file mode 100644 index 000000000..4a8901ddb --- /dev/null +++ b/src/com/walking/lesson19_object_methods/autos/Car.java @@ -0,0 +1,47 @@ +package com.walking.lesson19_object_methods.autos; + +public class Car { + private final String brand; + private final String owner; + private final String number; + + public Car(String brand, String owner, String number) { + this.brand = brand; + this.owner = owner; + this.number = number; + } + + @Override + public String toString() { + return "Машина марки " + brand + ", владелец: " + owner + ", номер: " + number; + } + + @Override + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + Car auto = (Car) car; + + return number.equals(auto.number) && brand.equals(auto.brand) && owner.equals(auto.owner); + } + + @Override + public int hashCode() { + int result = brand != null ? brand.hashCode() : 0; + result *= 31 + (owner != null ? owner.hashCode() : 0); + result *= 31 + (number != null ? number.hashCode() : 0); + + return result; + } + +} From e125d86796fe64123dc38015e4bff971152404ea Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 31 Mar 2025 17:36:58 +0300 Subject: [PATCH 030/131] lesson 20, task 1.2 --- .../task1_throwsException/Main.java | 35 ++++++++++++++++++- .../task1_throwsException/files/File.java | 32 +++++++++++++++++ .../files/FileNotFoundException.java | 12 +++++++ .../task1_throwsException/files/FileType.java | 21 +++++++++++ 4 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java create mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java index 368d583c8..1582a5778 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java @@ -1,5 +1,13 @@ package com.walking.lesson20_exceptions.task1_throwsException; +import com.walking.lesson20_exceptions.task1_catchException.files.File; +import com.walking.lesson20_exceptions.task1_catchException.files.FileNotFoundException; + +import java.util.Scanner; + +import static com.walking.lesson20_exceptions.task1_catchException.files.FileType.*; +import static com.walking.lesson20_exceptions.task1_catchException.files.FileType.PICTURE; + /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. *

@@ -16,6 +24,31 @@ * Подсказка: throws можно использовать в том числе в main(). */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws FileNotFoundException { + File[] files = new File[8]; + files[0] = new File("Девятый вал", "109 КБ", PICTURE); + files[1] = new File("Шрек 2", "128 МБ", VIDEO); + files[2] = new File("Три товарища", "895 КБ", TEXT); + files[3] = new File("Эфир", "7.4 МБ", AUDIO); + files[4] = new File("Пока течёт река", "930 КБ", TEXT); + files[5] = new File("М", "8 МБ", AUDIO); + files[6] = new File("Душа", "134 МБ", VIDEO); + files[7] = new File("Смешной мем", "99 КБ", PICTURE); + + Scanner in = new Scanner(System.in); + System.out.print("Введите название файла: "); + String name = in.nextLine(); + + File file = findFile(files, name); + System.out.println(file); + } + + public static File findFile(File[] files, String name) throws FileNotFoundException { + for (File file : files) { + if (name.equals(file.getName())) { + return file; + } + } + throw new FileNotFoundException("Файл не найден!"); } } diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java b/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java new file mode 100644 index 000000000..0aa428b65 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java @@ -0,0 +1,32 @@ +package com.walking.lesson20_exceptions.task1_throwsException.files; + +import com.walking.lesson20_exceptions.task1_catchException.files.FileType; + +public class File { + private final String name; + private final String size; + private final FileType type; + + public File(String name, String size, FileType type) { + this.name = name; + this.size = size; + this.type = type; + } + + public String getName() { + return name; + } + + public String getSize() { + return size; + } + + public FileType getType() { + return type; + } + + @Override + public String toString() { + return "Название файла: " + name + ".\nРазмер файла: " + size + ".\nТип файла: " + type.getName() + "."; + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java new file mode 100644 index 000000000..db65d4bfd --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task1_throwsException.files; + +public class FileNotFoundException extends Exception{ + + public FileNotFoundException(String message) { + super(message); + } + + public FileNotFoundException(Throwable cause) { + super(cause); + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java new file mode 100644 index 000000000..02336eb67 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java @@ -0,0 +1,21 @@ +package com.walking.lesson20_exceptions.task1_throwsException.files; + +public enum FileType { + TEXT("текст"), + VIDEO("видеозапись"), + AUDIO("аудиозапись"), + PICTURE("изображение"); + + private final String name; + + FileType(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} + + + From fe8d83f2eec81a221481912e1bd9b3bc0857373f Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 31 Mar 2025 17:40:29 +0300 Subject: [PATCH 031/131] lesson 20, task 1.2 --- .../lesson20_exceptions/task1_throwsException/Main.java | 7 +++---- .../task1_throwsException/files/File.java | 2 -- .../task1_throwsException/files/FileNotFoundException.java | 4 ---- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java index 1582a5778..93cd99866 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java @@ -1,12 +1,11 @@ package com.walking.lesson20_exceptions.task1_throwsException; -import com.walking.lesson20_exceptions.task1_catchException.files.File; -import com.walking.lesson20_exceptions.task1_catchException.files.FileNotFoundException; +import com.walking.lesson20_exceptions.task1_throwsException.files.File; +import com.walking.lesson20_exceptions.task1_throwsException.files.FileNotFoundException; import java.util.Scanner; -import static com.walking.lesson20_exceptions.task1_catchException.files.FileType.*; -import static com.walking.lesson20_exceptions.task1_catchException.files.FileType.PICTURE; +import static com.walking.lesson20_exceptions.task1_throwsException.files.FileType.*; /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java b/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java index 0aa428b65..c217daab9 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java @@ -1,7 +1,5 @@ package com.walking.lesson20_exceptions.task1_throwsException.files; -import com.walking.lesson20_exceptions.task1_catchException.files.FileType; - public class File { private final String name; private final String size; diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java index db65d4bfd..5a967df93 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java @@ -5,8 +5,4 @@ public class FileNotFoundException extends Exception{ public FileNotFoundException(String message) { super(message); } - - public FileNotFoundException(Throwable cause) { - super(cause); - } } From 1fdcb454e1523095457bbd18ba3fff2ad5a7b575 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 1 Apr 2025 16:04:16 +0300 Subject: [PATCH 032/131] lesson 20, task 2 --- .../lesson20_exceptions/task2/Main.java | 26 ++++++++++++- .../exception/InputValidationException.java | 7 ++++ .../task2/figures/RegularFigure.java | 17 +++++++++ .../task2/figures/Square.java | 29 +++++++++++++++ .../task2/figures/Triangle.java | 37 +++++++++++++++++++ 5 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson20_exceptions/task2/exception/InputValidationException.java create mode 100644 src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java create mode 100644 src/com/walking/lesson20_exceptions/task2/figures/Square.java create mode 100644 src/com/walking/lesson20_exceptions/task2/figures/Triangle.java diff --git a/src/com/walking/lesson20_exceptions/task2/Main.java b/src/com/walking/lesson20_exceptions/task2/Main.java index cccb443bf..15476199d 100644 --- a/src/com/walking/lesson20_exceptions/task2/Main.java +++ b/src/com/walking/lesson20_exceptions/task2/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson20_exceptions.task2; +import com.walking.lesson20_exceptions.task2.exception.InputValidationException; +import com.walking.lesson20_exceptions.task2.figures.RegularFigure; +import com.walking.lesson20_exceptions.task2.figures.Square; +import com.walking.lesson20_exceptions.task2.figures.Triangle; + +import java.util.Scanner; + /** * Реализуйте любой из вариантов Задачи 1 в уроке 16. * При некорректном вводе с клавиатуры выбрасывайте собственное исключение InputValidationException. @@ -8,6 +15,23 @@ * Предка исключения определите самостоятельно. */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws InputValidationException { + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + throw new InputValidationException("Длина должна быть больше 0"); + } + + RegularFigure figure = switch (figureType.toLowerCase()) { + case Triangle.NAME -> new Triangle(length); + case Square.NAME -> new Square(length); + default -> throw new InputValidationException("Неизвестный тип фигуры"); + }; + + System.out.println(figure.getFigure()); } } diff --git a/src/com/walking/lesson20_exceptions/task2/exception/InputValidationException.java b/src/com/walking/lesson20_exceptions/task2/exception/InputValidationException.java new file mode 100644 index 000000000..b945c7ec4 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/exception/InputValidationException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task2.exception; + +public class InputValidationException extends RuntimeException { + public InputValidationException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java b/src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java new file mode 100644 index 000000000..9966dc09f --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java @@ -0,0 +1,17 @@ +package com.walking.lesson20_exceptions.task2.figures; + +public abstract class RegularFigure { + protected final String SPACE = " "; + protected final String NEXT_LINE_SYMBOL = "\n"; + private final int length; + + protected RegularFigure(int length) { + this.length = length; + } + + public abstract String getFigure(); + + public int getLength() { + return length; + } +} diff --git a/src/com/walking/lesson20_exceptions/task2/figures/Square.java b/src/com/walking/lesson20_exceptions/task2/figures/Square.java new file mode 100644 index 000000000..a3d5c0b27 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/figures/Square.java @@ -0,0 +1,29 @@ +package com.walking.lesson20_exceptions.task2.figures; + +public class Square extends RegularFigure { + public static final String NAME = "квадрат"; + + private final String HORIZONTAL = "-"; + private final String VERTICAL = "|"; + + public Square(int length) { + super(length); + } + + @Override + public String getFigure() { + String square = getHorizontalSide(); + for (int i = 0; i < getLength() - 2; i++) { + square += getVerticalSide(); + } + return square + getHorizontalSide(); + } + + private String getHorizontalSide() { + return SPACE + HORIZONTAL.repeat(getLength() - 2) + SPACE + NEXT_LINE_SYMBOL; + } + + private String getVerticalSide() { + return VERTICAL + SPACE.repeat(getLength() - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } +} diff --git a/src/com/walking/lesson20_exceptions/task2/figures/Triangle.java b/src/com/walking/lesson20_exceptions/task2/figures/Triangle.java new file mode 100644 index 000000000..d63609fe2 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/figures/Triangle.java @@ -0,0 +1,37 @@ +package com.walking.lesson20_exceptions.task2.figures; + +public class Triangle extends RegularFigure { + public static final String NAME = "треугольник"; + + private final String RIGHT_SIDE = "\\"; + private final String LEFT_SIDE = "/"; + private final String BOTTOM_SIDE = "_"; + + + public Triangle(int length) { + super(length); + } + + @Override + public String getFigure() { + return getTriangle() + getBottomSide(); + } + + private String getBottomSide() { + return LEFT_SIDE + BOTTOM_SIDE.repeat(getLength()) + RIGHT_SIDE; + } + + private String getTriangle() { + int k = getLength() / 2; + int j = getLength() % 2; + + String triangle = ""; + for (int i = 0; i < getLength() / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + return triangle; + } +} From 6a9497e3598ae7947efa76f2ea69e760962340d0 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 1 Apr 2025 16:41:01 +0300 Subject: [PATCH 033/131] lesson 20, task 3 --- .../lesson20_exceptions/task3/Main.java | 33 ++++++++++++++++++- .../task3/animals/Animal.java | 13 ++++++++ .../task3/animals/Cat.java | 12 +++++++ .../task3/animals/Cow.java | 12 +++++++ .../task3/animals/Dog.java | 12 +++++++ .../exceptions/ArrayValidationException.java | 8 +++++ .../exceptions/UnknownAnimalException.java | 7 ++++ 7 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson20_exceptions/task3/animals/Animal.java create mode 100644 src/com/walking/lesson20_exceptions/task3/animals/Cat.java create mode 100644 src/com/walking/lesson20_exceptions/task3/animals/Cow.java create mode 100644 src/com/walking/lesson20_exceptions/task3/animals/Dog.java create mode 100644 src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java create mode 100644 src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java diff --git a/src/com/walking/lesson20_exceptions/task3/Main.java b/src/com/walking/lesson20_exceptions/task3/Main.java index 3b81b191c..f4f62aa5e 100644 --- a/src/com/walking/lesson20_exceptions/task3/Main.java +++ b/src/com/walking/lesson20_exceptions/task3/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson20_exceptions.task3; +import com.walking.lesson20_exceptions.task3.exceptions.ArrayValidationException; +import com.walking.lesson20_exceptions.task3.exceptions.UnknownAnimalException; +import com.walking.lesson20_exceptions.task3.animals.Animal; +import com.walking.lesson20_exceptions.task3.animals.Cat; +import com.walking.lesson20_exceptions.task3.animals.Cow; +import com.walking.lesson20_exceptions.task3.animals.Dog; + /** * Реализуйте любой из вариантов задачи в уроке 18. * Для ситуации, когда тип животного неизвестен, выбрасывайте собственное исключение UnknownAnimalException. @@ -10,6 +17,30 @@ * которое содержит информацию об индексе массива, содержащем null. */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws ArrayValidationException, UnknownAnimalException { + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog(), new Cow(), new Animal(""), null}; + sound(animals); + } + + public static void sound(Animal[] animals) throws ArrayValidationException, UnknownAnimalException { + for (int i = 0; i < animals.length; i++) { + if (!isValid(animals[i])) { + throw new ArrayValidationException("Object is expected at index: " + i); + } + + if (animals[i] instanceof Cat cat) { + cat.meow(); + } else if (animals[i] instanceof Dog dog) { + dog.woof(); + } else if (animals[i] instanceof Cow cow) { + cow.moo(); + } else { + throw new UnknownAnimalException("Unknown animal"); + } + } + } + + public static boolean isValid(Animal animal) { + return animal != null; } } diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Animal.java b/src/com/walking/lesson20_exceptions/task3/animals/Animal.java new file mode 100644 index 000000000..457860098 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animals/Animal.java @@ -0,0 +1,13 @@ +package com.walking.lesson20_exceptions.task3.animals; + +public class Animal { + protected final String sound; + + public Animal(String sound) { + this.sound = sound; + } + + public void sound() { + System.out.println(); + } +} diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Cat.java b/src/com/walking/lesson20_exceptions/task3/animals/Cat.java new file mode 100644 index 000000000..98dc7d441 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animals/Cat.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task3.animals; + +public class Cat extends Animal { + + public Cat() { + super("meow"); + } + + public void meow() { + System.out.println(sound); + } +} diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Cow.java b/src/com/walking/lesson20_exceptions/task3/animals/Cow.java new file mode 100644 index 000000000..c74894c86 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animals/Cow.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task3.animals; + +public class Cow extends Animal { + + public Cow() { + super("moo"); + } + + public void moo() { + System.out.println(sound); + } +} diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Dog.java b/src/com/walking/lesson20_exceptions/task3/animals/Dog.java new file mode 100644 index 000000000..f1aa15d5c --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animals/Dog.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task3.animals; + +public class Dog extends Animal { + + public Dog() { + super("woof"); + } + + public void woof() { + System.out.println(sound); + } +} diff --git a/src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java b/src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java new file mode 100644 index 000000000..cf758189d --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java @@ -0,0 +1,8 @@ +package com.walking.lesson20_exceptions.task3.exceptions; + +public class ArrayValidationException extends RuntimeException { + public ArrayValidationException(String message) { + super(message); + } +} + diff --git a/src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java b/src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java new file mode 100644 index 000000000..0e28c4ff5 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task3.exceptions; + +public class UnknownAnimalException extends RuntimeException { + public UnknownAnimalException(String message) { + super(message); + } +} From 97ae78254c765f1d086731cbdb032f41237e9d35 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Apr 2025 13:45:34 +0300 Subject: [PATCH 034/131] lesson 21 --- .../lesson21_immutable_object/Main.java | 39 ++++++++++++++- .../lesson21_immutable_object/autos/Car.java | 21 +++++++++ .../autos/CarIdentifier.java | 47 +++++++++++++++++++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson21_immutable_object/autos/Car.java create mode 100644 src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java diff --git a/src/com/walking/lesson21_immutable_object/Main.java b/src/com/walking/lesson21_immutable_object/Main.java index 6027e7453..2983b1dc7 100644 --- a/src/com/walking/lesson21_immutable_object/Main.java +++ b/src/com/walking/lesson21_immutable_object/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson21_immutable_object; +import com.walking.lesson21_immutable_object.autos.Car; +import com.walking.lesson21_immutable_object.autos.CarIdentifier; + +import java.util.Scanner; + /** * Реализуйте задачу из урока 19. *

@@ -10,5 +15,37 @@ */ public class Main { public static void main(String[] args) { + + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + + Scanner in = new Scanner(System.in); + System.out.print("Марка машины: "); + String brand = in.nextLine(); + System.out.print("Номер машины: "); + String number = in.nextLine(); + + CarIdentifier car = new CarIdentifier(brand, number); + Car car1 = findCar(cars, car); + + if (car1 == null) { + System.out.println("Машина не найдена!"); + } else { + System.out.println(car1); + } + } + + public static Car findCar(Car[] cars, CarIdentifier car) { + for (Car car1 : cars) { + if (car1.getIdentifier().equals(car)) { + return car1; + } + } + return null; } -} +} \ No newline at end of file diff --git a/src/com/walking/lesson21_immutable_object/autos/Car.java b/src/com/walking/lesson21_immutable_object/autos/Car.java new file mode 100644 index 000000000..3429bbed3 --- /dev/null +++ b/src/com/walking/lesson21_immutable_object/autos/Car.java @@ -0,0 +1,21 @@ +package com.walking.lesson21_immutable_object.autos; + +public class Car { + private final CarIdentifier identifier; + private final String owner; + + public Car(String brand, String owner, String number) { + this.identifier = new CarIdentifier(brand, number); + this.owner = owner; + } + + @Override + public String toString() { + return "Машина марки " + identifier.getBrand() + ", владелец: " + owner + ", номер: " + identifier.getNumber(); + } + + public CarIdentifier getIdentifier() { + return identifier; + } + +} diff --git a/src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java b/src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java new file mode 100644 index 000000000..b6187f5b3 --- /dev/null +++ b/src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java @@ -0,0 +1,47 @@ +package com.walking.lesson21_immutable_object.autos; + +public final class CarIdentifier { + private final String brand; + private final String number; + + public CarIdentifier(String brand, String number) { + this.brand = brand; + this.number = number; + } + + @Override + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + CarIdentifier auto = (CarIdentifier) car; + + return number.equals(auto.number) && brand.equals(auto.brand); + } + + @Override + public int hashCode() { + int result = brand != null ? brand.hashCode() : 0; + result *= 31 + (number != null ? number.hashCode() : 0); + + return result; + } + + public String getBrand() { + return brand; + } + + public String getNumber() { + return number; + } + +} From ba035de9f8e85a1a6b37f5b1ae0392a76dce9bb9 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Apr 2025 13:49:07 +0300 Subject: [PATCH 035/131] lesson 21 --- .../walking/lesson21_immutable_object/autos/Car.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/com/walking/lesson21_immutable_object/autos/Car.java b/src/com/walking/lesson21_immutable_object/autos/Car.java index 3429bbed3..2a828e3c5 100644 --- a/src/com/walking/lesson21_immutable_object/autos/Car.java +++ b/src/com/walking/lesson21_immutable_object/autos/Car.java @@ -2,7 +2,7 @@ public class Car { private final CarIdentifier identifier; - private final String owner; + private String owner; public Car(String brand, String owner, String number) { this.identifier = new CarIdentifier(brand, number); @@ -18,4 +18,12 @@ public CarIdentifier getIdentifier() { return identifier; } + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + } From dbcb8afaf1b2383593d260e0102250a6c37473bd Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 14 Apr 2025 13:29:04 +0300 Subject: [PATCH 036/131] =?UTF-8?q?lesson=2025,=20task=201,=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=BD=D0=B8=D0=BC=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1_abstract_class/Main.java | 17 ++---- .../task1/anonymous_class/Main.java | 61 +++++++++++++++++++ .../anonymous_class/figure/RegularFigure.java | 15 +++++ 3 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java diff --git a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java index e6d365d2e..cef21ec3a 100644 --- a/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/Main.java @@ -26,18 +26,11 @@ public static void main(String[] args) { return; } - RegularFigure figure; - - switch (figureType.toLowerCase()) { - case Triangle.NAME: - figure = new Triangle(length); - break; - case Square.NAME: - figure = new Square(length); - break; - default: - figure = new Unknown(length); - } + RegularFigure figure = switch (figureType.toLowerCase()) { + case Triangle.NAME -> new Triangle(length); + case Square.NAME -> new Square(length); + default -> new Unknown(length); + }; System.out.println(figure.getFigure()); } diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java index 8025e454c..53bb2ad31 100644 --- a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson25_nested_classes.task1.anonymous_class; +import com.walking.lesson25_nested_classes.task1.anonymous_class.figure.RegularFigure; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +11,62 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + System.out.println("Некорректный ввод"); + return; + } + + System.out.println(getResult(length, figureType)); + } + + public static String getResult(int length, String figureType) { + switch (figureType.toLowerCase()) { + case "треугольник": + RegularFigure triangle = new RegularFigure() { + @Override + public String getFigure() { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + return triangle + LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + }; + return triangle.getFigure(); + + case "квадрат": + RegularFigure square = new RegularFigure() { + @Override + public String getFigure() { + String horizontal = SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + String square = horizontal; + for (int i = 0; i < length - 2; i++) { + square += VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } + return square + horizontal; + } + }; + return square.getFigure(); + + default: + RegularFigure unknown = new RegularFigure() { + @Override + public String getFigure() { + return "Неизвестная фигура"; + } + } ; + return unknown.getFigure(); + } } } diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java new file mode 100644 index 000000000..6ae21deeb --- /dev/null +++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java @@ -0,0 +1,15 @@ +package com.walking.lesson25_nested_classes.task1.anonymous_class.figure; + +public interface RegularFigure { + String SPACE = " "; + String NEXT_LINE_SYMBOL = "\n"; + String HORIZONTAL = "-"; + String VERTICAL = "|"; + String RIGHT_SIDE = "\\"; + String LEFT_SIDE = "/"; + String BOTTOM_SIDE = "_"; + + String getFigure(); + + +} From 0ab1b7e1d89bec916ebc080bae1728fbbdd50613 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 14 Apr 2025 13:31:51 +0300 Subject: [PATCH 037/131] =?UTF-8?q?lesson=2025,=20task=201,=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=BD=D0=B8=D0=BC=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson25_nested_classes/task1/anonymous_class/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java index 53bb2ad31..bf33a7e8f 100644 --- a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java @@ -43,7 +43,7 @@ public String getFigure() { return triangle + LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; } }; - return triangle.getFigure(); + triangle.getFigure(); case "квадрат": RegularFigure square = new RegularFigure() { @@ -65,7 +65,7 @@ public String getFigure() { public String getFigure() { return "Неизвестная фигура"; } - } ; + }; return unknown.getFigure(); } } From 854c1b79b4777c8848598900a19f5da6ad1cf69b Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 14 Apr 2025 13:33:04 +0300 Subject: [PATCH 038/131] =?UTF-8?q?lesson=2025,=20task=201,=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=BD=D0=B8=D0=BC=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson25_nested_classes/task1/anonymous_class/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java index bf33a7e8f..8582f0a4a 100644 --- a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java @@ -43,7 +43,7 @@ public String getFigure() { return triangle + LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; } }; - triangle.getFigure(); + return triangle.getFigure(); case "квадрат": RegularFigure square = new RegularFigure() { From 28bc2ac72f12919b103798aabbf47a0857982f3c Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 14 Apr 2025 15:38:58 +0300 Subject: [PATCH 039/131] =?UTF-8?q?lesson=2025,=20task=201,=20=D0=B2=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anonymous_class/figure/RegularFigure.java | 2 - .../task1/inner_class/Main.java | 24 +++++++ .../inner_class/figure/RegularFigure.java | 64 +++++++++++++++++++ 3 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java index 6ae21deeb..71d8e2694 100644 --- a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java @@ -10,6 +10,4 @@ public interface RegularFigure { String BOTTOM_SIDE = "_"; String getFigure(); - - } diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java index add78eefc..9c44c546e 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson25_nested_classes.task1.inner_class; +import com.walking.lesson25_nested_classes.task1.inner_class.figure.RegularFigure; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +11,25 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + System.out.println("Некорректный ввод"); + return; + } + + System.out.println(getResult(figureType).getFigure(length)); + } + + public static RegularFigure getResult(String figureType) { + return switch(figureType.toLowerCase()) { + case "треугольник" -> new RegularFigure.Triangle(); + case "квадрат" -> new RegularFigure.Square(); + default -> new RegularFigure.Unknown(); + }; } } diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java new file mode 100644 index 000000000..4a19317a0 --- /dev/null +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java @@ -0,0 +1,64 @@ +package com.walking.lesson25_nested_classes.task1.inner_class.figure; + +public interface RegularFigure { + String SPACE = " "; + String NEXT_LINE_SYMBOL = "\n"; + String HORIZONTAL = "-"; + String VERTICAL = "|"; + String RIGHT_SIDE = "\\"; + String LEFT_SIDE = "/"; + String BOTTOM_SIDE = "_"; + + String getFigure(int length); + + class Square implements RegularFigure { + @Override + public String getFigure(int length) { + String square = getHorizontalSide(length); + for (int i = 0; i < length - 2; i++) { + square += getVerticalSide(length); + } + return square + getHorizontalSide(length); + } + + private String getHorizontalSide(int length) { + return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + } + + private String getVerticalSide(int length) { + return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } + } + + class Triangle implements RegularFigure { + @Override + public String getFigure(int length) { + return getTriangle(length) + getBottomSide(length); + } + + private String getBottomSide(int length) { + return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + + private String getTriangle(int length) { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + return triangle; + } + } + + class Unknown implements RegularFigure{ + @Override + public String getFigure(int length) { + return "Неизвестная фигура"; + } + } +} From 5f131064d4f6e30c3d388c199179acac4e4a8c82 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 14 Apr 2025 15:52:38 +0300 Subject: [PATCH 040/131] =?UTF-8?q?lesson=2025,=20task=201,=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/inner_class/Main.java | 3 +- .../static_class/figure/RegularFigure.java | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java index 9c44c546e..2139ed36b 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java @@ -1,6 +1,7 @@ package com.walking.lesson25_nested_classes.task1.inner_class; -import com.walking.lesson25_nested_classes.task1.inner_class.figure.RegularFigure; + +import com.walking.lesson25_nested_classes.task1.static_class.figure.RegularFigure; import java.util.Scanner; diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java new file mode 100644 index 000000000..bfdaa735c --- /dev/null +++ b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java @@ -0,0 +1,61 @@ +package com.walking.lesson25_nested_classes.task1.static_class.figure; + +public interface RegularFigure { + String SPACE = " "; + String NEXT_LINE_SYMBOL = "\n"; + String HORIZONTAL = "-"; + String VERTICAL = "|"; + String RIGHT_SIDE = "\\"; + String LEFT_SIDE = "/"; + String BOTTOM_SIDE = "_"; + + String getFigure(int length); + + class Square implements RegularFigure { + public String getFigure(int length) { + String square = getHorizontalSide(length); + for (int i = 0; i < length - 2; i++) { + square += getVerticalSide(length); + } + return square + getHorizontalSide(length); + } + + private String getHorizontalSide(int length) { + return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + } + + private String getVerticalSide(int length) { + return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } + } + + class Triangle implements RegularFigure { + public String getFigure(int length) { + return getTriangle(length) + getBottomSide(length); + } + + private String getBottomSide(int length) { + return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + + private String getTriangle(int length) { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + return triangle; + } + } + + class Unknown implements RegularFigure { + public String getFigure(int length) { + return "Неизвестная фигура"; + } + } +} From 1f793d127afe8818966b98a14d2428d0630cfd69 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 14 Apr 2025 16:16:14 +0300 Subject: [PATCH 041/131] =?UTF-8?q?lesson=2025,=20task=201,=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/inner_class/Main.java | 14 ++-- .../inner_class/figure/RegularFigure.java | 69 +++++++++++-------- 2 files changed, 46 insertions(+), 37 deletions(-) diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java index 2139ed36b..417fb6f1e 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java @@ -1,7 +1,6 @@ package com.walking.lesson25_nested_classes.task1.inner_class; - -import com.walking.lesson25_nested_classes.task1.static_class.figure.RegularFigure; +import com.walking.lesson25_nested_classes.task1.inner_class.figure.RegularFigure; import java.util.Scanner; @@ -23,14 +22,15 @@ public static void main(String[] args) { return; } - System.out.println(getResult(figureType).getFigure(length)); + RegularFigure figure = new RegularFigure(length); + System.out.println(getResult(figure, figureType)); } - public static RegularFigure getResult(String figureType) { + public static String getResult(RegularFigure figure, String figureType) { return switch(figureType.toLowerCase()) { - case "треугольник" -> new RegularFigure.Triangle(); - case "квадрат" -> new RegularFigure.Square(); - default -> new RegularFigure.Unknown(); + case "треугольник" -> figure.triangle.getFigure(); + case "квадрат" -> figure.square.getFigure(); + default -> "Неизвестная фигура"; }; } } diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java index 4a19317a0..a5d4c0b4f 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java @@ -1,46 +1,62 @@ package com.walking.lesson25_nested_classes.task1.inner_class.figure; -public interface RegularFigure { - String SPACE = " "; - String NEXT_LINE_SYMBOL = "\n"; - String HORIZONTAL = "-"; - String VERTICAL = "|"; - String RIGHT_SIDE = "\\"; - String LEFT_SIDE = "/"; - String BOTTOM_SIDE = "_"; +public class RegularFigure { + // как я поняла, у интерфейса внутренние классы статик по умолчанию, поэтому тут заменила интерфейс на класс - String getFigure(int length); + private final String SPACE = " "; + private final String NEXT_LINE_SYMBOL = "\n"; + private final String HORIZONTAL = "-"; + private final String VERTICAL = "|"; + private final String RIGHT_SIDE = "\\"; + private final String LEFT_SIDE = "/"; + private final String BOTTOM_SIDE = "_"; - class Square implements RegularFigure { - @Override - public String getFigure(int length) { - String square = getHorizontalSide(length); + public final Square square; + public final Triangle triangle; + + public RegularFigure (int length) { + square = new Square(length); + triangle = new Triangle(length); + } + + public class Square { + private final int length; + private Square(int length) { + this.length = length; + } + + public String getFigure() { + String square = getHorizontalSide(); for (int i = 0; i < length - 2; i++) { - square += getVerticalSide(length); + square += getVerticalSide(); } - return square + getHorizontalSide(length); + return square + getHorizontalSide(); } - private String getHorizontalSide(int length) { + private String getHorizontalSide() { return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; } - private String getVerticalSide(int length) { + private String getVerticalSide() { return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; } } - class Triangle implements RegularFigure { - @Override - public String getFigure(int length) { - return getTriangle(length) + getBottomSide(length); + public class Triangle { + private final int length; + private Triangle(int length) { + this.length = length; } - private String getBottomSide(int length) { + public String getFigure() { + return getTriangle() + getBottomSide(); + } + + private String getBottomSide() { return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; } - private String getTriangle(int length) { + private String getTriangle() { int k = length / 2; int j = length % 2; @@ -54,11 +70,4 @@ private String getTriangle(int length) { return triangle; } } - - class Unknown implements RegularFigure{ - @Override - public String getFigure(int length) { - return "Неизвестная фигура"; - } - } } From c975f8353dba8e932ff92d2a197e28205d9ad2b8 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 15 Apr 2025 11:47:39 +0300 Subject: [PATCH 042/131] =?UTF-8?q?lesson=2025,=20task=202,=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=BD=D0=B8=D0=BC=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task2/anonymous_class/Main.java | 31 +++++++++++++++++++ .../task2/anonymous_class/animal/Animal.java | 8 +++++ 2 files changed, 39 insertions(+) create mode 100644 src/com/walking/lesson25_nested_classes/task2/anonymous_class/animal/Animal.java diff --git a/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java index 5f64539cd..2d17d3ae5 100644 --- a/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson25_nested_classes.task2.anonymous_class; +import com.walking.lesson25_nested_classes.task2.anonymous_class.animal.Animal; + /** * Реализуйте задачу * ... @@ -7,5 +9,34 @@ */ public class Main { public static void main(String[] args) { + Animal[] animals = new Animal[]{new Animal() { + @Override + public void sound() { + System.out.println("meow"); + } + }, new Animal() { + @Override + public void sound() { + System.out.println("woof"); + } + }, new Animal() { + @Override + public void sound() { + System.out.println("moo"); + } + }, new Animal() { + @Override + public void sound() { + System.out.println("meow"); + } + }}; + + soundAll(animals); + } + + private static void soundAll(Animal[] animals) { + for (Animal animal : animals) { + animal.sound(); + } } } diff --git a/src/com/walking/lesson25_nested_classes/task2/anonymous_class/animal/Animal.java b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/animal/Animal.java new file mode 100644 index 000000000..c07ac6777 --- /dev/null +++ b/src/com/walking/lesson25_nested_classes/task2/anonymous_class/animal/Animal.java @@ -0,0 +1,8 @@ +package com.walking.lesson25_nested_classes.task2.anonymous_class.animal; + +public class Animal { + + public void sound() { + System.out.println("Unknown animal!"); + } +} From 570cd3b248b8e0dcee6473bd1160caddcb97a2b0 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 15 Apr 2025 12:28:36 +0300 Subject: [PATCH 043/131] =?UTF-8?q?lesson=2025,=20task=202,=20=D0=B2=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task2/inner_class/Main.java | 33 +++++++++++++++++++ .../task2/inner_class/animal/Animal.java | 9 +++++ 2 files changed, 42 insertions(+) create mode 100644 src/com/walking/lesson25_nested_classes/task2/inner_class/animal/Animal.java diff --git a/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java index 9302836d5..809ec2d6e 100644 --- a/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task2/inner_class/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson25_nested_classes.task2.inner_class; +import com.walking.lesson25_nested_classes.task2.inner_class.animal.Animal; + /** * Реализуйте задачу * ... @@ -7,5 +9,36 @@ */ public class Main { public static void main(String[] args) { + Main main = new Main(); + Animal[] animals = new Animal[] {main.new Cat(), main.new Cow(), main.new Dog()}; + + soundAll(animals); + } + + public static void soundAll(Animal[] animals) { + for(Animal animal : animals) { + animal.sound(); + } + } + + private class Cat extends Animal { + @Override + public void sound() { + System.out.println("meow"); + } + } + + private class Dog extends Animal { + @Override + public void sound() { + System.out.println("woof"); + } + } + + private class Cow extends Animal { + @Override + public void sound() { + System.out.println("moo"); + } } } diff --git a/src/com/walking/lesson25_nested_classes/task2/inner_class/animal/Animal.java b/src/com/walking/lesson25_nested_classes/task2/inner_class/animal/Animal.java new file mode 100644 index 000000000..426db7251 --- /dev/null +++ b/src/com/walking/lesson25_nested_classes/task2/inner_class/animal/Animal.java @@ -0,0 +1,9 @@ +package com.walking.lesson25_nested_classes.task2.inner_class.animal; + +public class Animal { + + public void sound() { + System.out.println("Unknown animal"); + } + +} From 2d5e2b46b721e57290ee185a6806c55440732076 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 15 Apr 2025 12:39:33 +0300 Subject: [PATCH 044/131] =?UTF-8?q?lesson=2025,=20task=202,=20=D0=B2=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/inner_class/Main.java | 74 ++++++++++++++++-- .../inner_class/figure/RegularFigure.java | 76 +++---------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java index 417fb6f1e..30b89ba1f 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java @@ -11,6 +11,8 @@ */ public class Main { public static void main(String[] args) { + Main main = new Main(); + Scanner in = new Scanner(System.in); System.out.print("Введите тип фигуры: "); String figureType = in.nextLine(); @@ -22,15 +24,71 @@ public static void main(String[] args) { return; } - RegularFigure figure = new RegularFigure(length); - System.out.println(getResult(figure, figureType)); + switch (figureType.toLowerCase()) { + case "треугольник": + System.out.println(main.new Triangle(length).getFigure()); + break; + case "квадрат": + System.out.println(main.new Square(length).getFigure()); + break; + default: + System.out.println("Неизвестная фигура"); + break; + } } - public static String getResult(RegularFigure figure, String figureType) { - return switch(figureType.toLowerCase()) { - case "треугольник" -> figure.triangle.getFigure(); - case "квадрат" -> figure.square.getFigure(); - default -> "Неизвестная фигура"; - }; + class Square implements RegularFigure { + private final int length; + + private Square(int length) { + this.length = length; + } + + @Override + public String getFigure() { + String square = getHorizontalSide(); + for (int i = 0; i < length - 2; i++) { + square += getVerticalSide(); + } + return square + getHorizontalSide(); + } + + private String getHorizontalSide() { + return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + } + + private String getVerticalSide() { + return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } + } + + class Triangle implements RegularFigure{ + private final int length; + private Triangle(int length) { + this.length = length; + } + + @Override + public String getFigure() { + return getTriangle() + getBottomSide(); + } + + private String getBottomSide() { + return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + + private String getTriangle() { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + return triangle; + } } } diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java index a5d4c0b4f..8bd999f7b 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java @@ -1,73 +1,15 @@ package com.walking.lesson25_nested_classes.task1.inner_class.figure; -public class RegularFigure { +public interface RegularFigure { // как я поняла, у интерфейса внутренние классы статик по умолчанию, поэтому тут заменила интерфейс на класс - private final String SPACE = " "; - private final String NEXT_LINE_SYMBOL = "\n"; - private final String HORIZONTAL = "-"; - private final String VERTICAL = "|"; - private final String RIGHT_SIDE = "\\"; - private final String LEFT_SIDE = "/"; - private final String BOTTOM_SIDE = "_"; + String SPACE = " "; + String NEXT_LINE_SYMBOL = "\n"; + String HORIZONTAL = "-"; + String VERTICAL = "|"; + String RIGHT_SIDE = "\\"; + String LEFT_SIDE = "/"; + String BOTTOM_SIDE = "_"; - public final Square square; - public final Triangle triangle; - - public RegularFigure (int length) { - square = new Square(length); - triangle = new Triangle(length); - } - - public class Square { - private final int length; - private Square(int length) { - this.length = length; - } - - public String getFigure() { - String square = getHorizontalSide(); - for (int i = 0; i < length - 2; i++) { - square += getVerticalSide(); - } - return square + getHorizontalSide(); - } - - private String getHorizontalSide() { - return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; - } - - private String getVerticalSide() { - return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; - } - } - - public class Triangle { - private final int length; - private Triangle(int length) { - this.length = length; - } - - public String getFigure() { - return getTriangle() + getBottomSide(); - } - - private String getBottomSide() { - return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; - } - - private String getTriangle() { - int k = length / 2; - int j = length % 2; - - String triangle = ""; - for (int i = 0; i < length / 2; i++) { - triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; - k--; - j += 2; - } - - return triangle; - } - } + String getFigure(); } From db89cbc49cebf4cd7c530e5952c3fbc68c36d3e7 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 15 Apr 2025 12:53:45 +0300 Subject: [PATCH 045/131] =?UTF-8?q?lesson=2025,=20task=202,=20static=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task2/static_class/Main.java | 32 +++++++++++++++++++ .../task2/static_class/animal/Animal.java | 9 ++++++ 2 files changed, 41 insertions(+) create mode 100644 src/com/walking/lesson25_nested_classes/task2/static_class/animal/Animal.java diff --git a/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java index 39de8becd..3f25102a5 100644 --- a/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson25_nested_classes.task2.static_class; +import com.walking.lesson25_nested_classes.task2.static_class.animal.Animal; + /** * Реализуйте задачу * ... @@ -7,5 +9,35 @@ */ public class Main { public static void main(String[] args) { + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog(), new Cow(), new Animal()}; + + soundAll(animals); + } + + public static void soundAll(Animal[] animals) { + for (Animal animal : animals) { + animal.sound(); + } + } + + static class Cat extends Animal { + @Override + public void sound() { + System.out.println("meow"); + } + } + + static class Dog extends Animal { + @Override + public void sound() { + System.out.println("woof"); + } + } + + static class Cow extends Animal { + @Override + public void sound() { + System.out.println("moo"); + } } } diff --git a/src/com/walking/lesson25_nested_classes/task2/static_class/animal/Animal.java b/src/com/walking/lesson25_nested_classes/task2/static_class/animal/Animal.java new file mode 100644 index 000000000..0436d826c --- /dev/null +++ b/src/com/walking/lesson25_nested_classes/task2/static_class/animal/Animal.java @@ -0,0 +1,9 @@ +package com.walking.lesson25_nested_classes.task2.static_class.animal; + +public class Animal { + + public void sound() { + System.out.println("Unknown animal"); + } + +} From 1613dc4d5f6036c84c83df7b9bf54cb869af981f Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 15 Apr 2025 13:00:49 +0300 Subject: [PATCH 046/131] =?UTF-8?q?=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D1=82=D1=8C=20=D0=B2=D1=81?= =?UTF-8?q?=D1=91=20=D0=B2=2025=20=D1=83=D1=80=D0=BE=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/static_class/Main.java | 73 +++++++++++++++++++ .../static_class/figure/RegularFigure.java | 46 ------------ 2 files changed, 73 insertions(+), 46 deletions(-) diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java index deef3aa47..63b92d162 100644 --- a/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson25_nested_classes.task1.static_class; +import com.walking.lesson25_nested_classes.task1.static_class.figure.RegularFigure; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +11,74 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + System.out.print("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + System.out.println("Некорректный ввод"); + return; + } + + System.out.println(getFigure(figureType).getFigure(length)); + } + + public static RegularFigure getFigure(String figureType) { + return switch (figureType.toLowerCase()) { + case "треугольник" -> new Triangle(); + case "квадрат" -> new Square(); + default -> new Unknown(); + }; + } + + + static class Square implements RegularFigure { + public String getFigure(int length) { + String square = getHorizontalSide(length); + for (int i = 0; i < length - 2; i++) { + square += getVerticalSide(length); + } + return square + getHorizontalSide(length); + } + + private String getHorizontalSide(int length) { + return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + } + + private String getVerticalSide(int length) { + return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } + } + + static class Triangle implements RegularFigure { + public String getFigure(int length) { + return getTriangle(length) + getBottomSide(length); + } + + private String getBottomSide(int length) { + return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + + private String getTriangle(int length) { + int k = length / 2; + int j = length % 2; + + String triangle = ""; + for (int i = 0; i < length / 2; i++) { + triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + + return triangle; + } + } + + static class Unknown implements RegularFigure { + public String getFigure(int length) { + return "Неизвестная фигура"; + } } } diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java index bfdaa735c..486963e4f 100644 --- a/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java @@ -11,51 +11,5 @@ public interface RegularFigure { String getFigure(int length); - class Square implements RegularFigure { - public String getFigure(int length) { - String square = getHorizontalSide(length); - for (int i = 0; i < length - 2; i++) { - square += getVerticalSide(length); - } - return square + getHorizontalSide(length); - } - private String getHorizontalSide(int length) { - return SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; - } - - private String getVerticalSide(int length) { - return VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; - } - } - - class Triangle implements RegularFigure { - public String getFigure(int length) { - return getTriangle(length) + getBottomSide(length); - } - - private String getBottomSide(int length) { - return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; - } - - private String getTriangle(int length) { - int k = length / 2; - int j = length % 2; - - String triangle = ""; - for (int i = 0; i < length / 2; i++) { - triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; - k--; - j += 2; - } - - return triangle; - } - } - - class Unknown implements RegularFigure { - public String getFigure(int length) { - return "Неизвестная фигура"; - } - } } From 1c95eac9c3d8af605e0318634daefeee25c4c04f Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 15 Apr 2025 13:02:45 +0300 Subject: [PATCH 047/131] =?UTF-8?q?=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D1=82=D1=8C=20=D0=B2=D1=81?= =?UTF-8?q?=D1=91=20=D0=B2=2025=20=D1=83=D1=80=D0=BE=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson25_nested_classes/task1/inner_class/Main.java | 3 ++- .../task1/inner_class/figure/RegularFigure.java | 2 -- .../task1/static_class/figure/RegularFigure.java | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java index 30b89ba1f..f10e956e7 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java @@ -62,8 +62,9 @@ private String getVerticalSide() { } } - class Triangle implements RegularFigure{ + class Triangle implements RegularFigure { private final int length; + private Triangle(int length) { this.length = length; } diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java index 8bd999f7b..54449dd0c 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java @@ -1,8 +1,6 @@ package com.walking.lesson25_nested_classes.task1.inner_class.figure; public interface RegularFigure { - // как я поняла, у интерфейса внутренние классы статик по умолчанию, поэтому тут заменила интерфейс на класс - String SPACE = " "; String NEXT_LINE_SYMBOL = "\n"; String HORIZONTAL = "-"; diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java index 486963e4f..7f0854ede 100644 --- a/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java @@ -10,6 +10,4 @@ public interface RegularFigure { String BOTTOM_SIDE = "_"; String getFigure(int length); - - } From fb22c283e1b8d07bd181a600a58f1b326d28913f Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 19 Apr 2025 20:16:40 +0300 Subject: [PATCH 048/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=2017-21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task3/figure/RegularFigure.java | 1 + .../walking/lesson19_object_methods/Main.java | 6 ++-- .../{autos => car}/Car.java | 2 +- .../task1_catchException/Main.java | 6 ++-- .../{files => file}/File.java | 2 +- .../{files => file}/FileType.java | 5 +--- .../files/FileNotFoundException.java | 7 ----- .../task1_throwsException/Main.java | 6 ++-- .../{files => file}/File.java | 2 +- .../{files => file}/FileType.java | 5 +--- .../files/FileNotFoundException.java | 8 ----- .../lesson20_exceptions/task2/Main.java | 12 ++++---- .../{figures => figure}/RegularFigure.java | 2 +- .../task2/{figures => figure}/Square.java | 2 +- .../task2/{figures => figure}/Triangle.java | 2 +- .../lesson20_exceptions/task3/Main.java | 29 +++++++------------ .../task3/{animals => animal}/Animal.java | 2 +- .../task3/{animals => animal}/Cat.java | 2 +- .../task3/{animals => animal}/Cow.java | 2 +- .../task3/{animals => animal}/Dog.java | 2 +- .../ArrayValidationException.java | 2 +- .../UnknownAnimalException.java | 2 +- .../lesson21_immutable_object/Main.java | 24 +++++---------- .../{autos => car}/Car.java | 23 ++++++++++++++- .../{autos => car}/CarIdentifier.java | 6 ++-- .../car/CarService.java | 13 +++++++++ 26 files changed, 88 insertions(+), 87 deletions(-) rename src/com/walking/lesson19_object_methods/{autos => car}/Car.java (95%) rename src/com/walking/lesson20_exceptions/task1_catchException/{files => file}/File.java (99%) rename src/com/walking/lesson20_exceptions/task1_catchException/{files => file}/FileType.java (98%) delete mode 100644 src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java rename src/com/walking/lesson20_exceptions/task1_throwsException/{files => file}/File.java (99%) rename src/com/walking/lesson20_exceptions/task1_throwsException/{files => file}/FileType.java (97%) delete mode 100644 src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java rename src/com/walking/lesson20_exceptions/task2/{figures => figure}/RegularFigure.java (86%) rename src/com/walking/lesson20_exceptions/task2/{figures => figure}/Square.java (93%) rename src/com/walking/lesson20_exceptions/task2/{figures => figure}/Triangle.java (94%) rename src/com/walking/lesson20_exceptions/task3/{animals => animal}/Animal.java (77%) rename src/com/walking/lesson20_exceptions/task3/{animals => animal}/Cat.java (73%) rename src/com/walking/lesson20_exceptions/task3/{animals => animal}/Cow.java (73%) rename src/com/walking/lesson20_exceptions/task3/{animals => animal}/Dog.java (73%) rename src/com/walking/lesson20_exceptions/task3/{exceptions => exception}/ArrayValidationException.java (72%) rename src/com/walking/lesson20_exceptions/task3/{exceptions => exception}/UnknownAnimalException.java (71%) rename src/com/walking/lesson21_immutable_object/{autos => car}/Car.java (58%) rename src/com/walking/lesson21_immutable_object/{autos => car}/CarIdentifier.java (82%) create mode 100644 src/com/walking/lesson21_immutable_object/car/CarService.java diff --git a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java index 64489503f..fc663143c 100644 --- a/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java +++ b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java @@ -46,6 +46,7 @@ public String getFigure(int length) { private static final String HORIZONTAL_SIDE = "_"; private static final String HORIZONTAL_SQUARE = "-"; private static final String VERTICAL_SQUARE = "|"; + private final String name; RegularFigure(String name) { diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index b3c8defe2..9f4d4e213 100644 --- a/src/com/walking/lesson19_object_methods/Main.java +++ b/src/com/walking/lesson19_object_methods/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson19_object_methods; -import com.walking.lesson19_object_methods.autos.Car; +import com.walking.lesson19_object_methods.car.Car; import java.util.Scanner; @@ -37,7 +37,7 @@ public static void main(String[] args) { Car car = new Car(make, owner, number); - if (!carExist(cars, car)) { + if (!isCarExist(cars, car)) { System.out.println("Машина не найдена!"); } else { System.out.println(car); @@ -45,7 +45,7 @@ public static void main(String[] args) { } } - public static boolean carExist(Car[] cars, Car car) { + public static boolean isCarExist(Car[] cars, Car car) { for (Car car1 : cars) { if (car1.equals(car)) { return true; diff --git a/src/com/walking/lesson19_object_methods/autos/Car.java b/src/com/walking/lesson19_object_methods/car/Car.java similarity index 95% rename from src/com/walking/lesson19_object_methods/autos/Car.java rename to src/com/walking/lesson19_object_methods/car/Car.java index 4a8901ddb..ef13d12f4 100644 --- a/src/com/walking/lesson19_object_methods/autos/Car.java +++ b/src/com/walking/lesson19_object_methods/car/Car.java @@ -1,4 +1,4 @@ -package com.walking.lesson19_object_methods.autos; +package com.walking.lesson19_object_methods.car; public class Car { private final String brand; diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java index b15ee4318..a0a8454b1 100644 --- a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java @@ -1,11 +1,11 @@ package com.walking.lesson20_exceptions.task1_catchException; -import com.walking.lesson20_exceptions.task1_catchException.files.File; -import com.walking.lesson20_exceptions.task1_catchException.files.FileNotFoundException; +import com.walking.lesson20_exceptions.task1_catchException.file.File; +import java.io.FileNotFoundException; import java.util.Scanner; -import static com.walking.lesson20_exceptions.task1_catchException.files.FileType.*; +import static com.walking.lesson20_exceptions.task1_catchException.file.FileType.*; /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/files/File.java b/src/com/walking/lesson20_exceptions/task1_catchException/file/File.java similarity index 99% rename from src/com/walking/lesson20_exceptions/task1_catchException/files/File.java rename to src/com/walking/lesson20_exceptions/task1_catchException/file/File.java index 21a5ebdc9..383eec687 100644 --- a/src/com/walking/lesson20_exceptions/task1_catchException/files/File.java +++ b/src/com/walking/lesson20_exceptions/task1_catchException/file/File.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task1_catchException.files; +package com.walking.lesson20_exceptions.task1_catchException.file; public class File { private final String name; diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java b/src/com/walking/lesson20_exceptions/task1_catchException/file/FileType.java similarity index 98% rename from src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java rename to src/com/walking/lesson20_exceptions/task1_catchException/file/FileType.java index 5fb387cc9..2df950d41 100644 --- a/src/com/walking/lesson20_exceptions/task1_catchException/files/FileType.java +++ b/src/com/walking/lesson20_exceptions/task1_catchException/file/FileType.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task1_catchException.files; +package com.walking.lesson20_exceptions.task1_catchException.file; public enum FileType { TEXT("текст"), @@ -16,6 +16,3 @@ public String getName() { return name; } } - - - diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java deleted file mode 100644 index 7ee2ff55b..000000000 --- a/src/com/walking/lesson20_exceptions/task1_catchException/files/FileNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson20_exceptions.task1_catchException.files; - -public class FileNotFoundException extends Exception{ - public FileNotFoundException(String message) { - super(message); - } -} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java index 93cd99866..0a2463182 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java @@ -1,11 +1,11 @@ package com.walking.lesson20_exceptions.task1_throwsException; -import com.walking.lesson20_exceptions.task1_throwsException.files.File; -import com.walking.lesson20_exceptions.task1_throwsException.files.FileNotFoundException; +import com.walking.lesson20_exceptions.task1_throwsException.file.File; +import java.io.FileNotFoundException; import java.util.Scanner; -import static com.walking.lesson20_exceptions.task1_throwsException.files.FileType.*; +import static com.walking.lesson20_exceptions.task1_throwsException.file.FileType.*; /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java b/src/com/walking/lesson20_exceptions/task1_throwsException/file/File.java similarity index 99% rename from src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java rename to src/com/walking/lesson20_exceptions/task1_throwsException/file/File.java index c217daab9..97cdc29e6 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/files/File.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/file/File.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task1_throwsException.files; +package com.walking.lesson20_exceptions.task1_throwsException.file; public class File { private final String name; diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java b/src/com/walking/lesson20_exceptions/task1_throwsException/file/FileType.java similarity index 97% rename from src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java rename to src/com/walking/lesson20_exceptions/task1_throwsException/file/FileType.java index 02336eb67..7a7c8996a 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileType.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/file/FileType.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task1_throwsException.files; +package com.walking.lesson20_exceptions.task1_throwsException.file; public enum FileType { TEXT("текст"), @@ -16,6 +16,3 @@ public String getName() { return name; } } - - - diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java b/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java deleted file mode 100644 index 5a967df93..000000000 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/files/FileNotFoundException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.walking.lesson20_exceptions.task1_throwsException.files; - -public class FileNotFoundException extends Exception{ - - public FileNotFoundException(String message) { - super(message); - } -} diff --git a/src/com/walking/lesson20_exceptions/task2/Main.java b/src/com/walking/lesson20_exceptions/task2/Main.java index 15476199d..047ebc1f5 100644 --- a/src/com/walking/lesson20_exceptions/task2/Main.java +++ b/src/com/walking/lesson20_exceptions/task2/Main.java @@ -1,9 +1,9 @@ package com.walking.lesson20_exceptions.task2; import com.walking.lesson20_exceptions.task2.exception.InputValidationException; -import com.walking.lesson20_exceptions.task2.figures.RegularFigure; -import com.walking.lesson20_exceptions.task2.figures.Square; -import com.walking.lesson20_exceptions.task2.figures.Triangle; +import com.walking.lesson20_exceptions.task2.figure.RegularFigure; +import com.walking.lesson20_exceptions.task2.figure.Square; +import com.walking.lesson20_exceptions.task2.figure.Triangle; import java.util.Scanner; @@ -17,8 +17,6 @@ public class Main { public static void main(String[] args) throws InputValidationException { Scanner in = new Scanner(System.in); - System.out.print("Введите тип фигуры: "); - String figureType = in.nextLine(); System.out.print("Введите длину стороны: "); int length = in.nextInt(); @@ -26,6 +24,10 @@ public static void main(String[] args) throws InputValidationException { throw new InputValidationException("Длина должна быть больше 0"); } + in = new Scanner(System.in); // не уверена, что это правильно, но без этой строки не даёт название фигуры ввести + System.out.print("Введите тип фигуры: "); + String figureType = in.nextLine(); + RegularFigure figure = switch (figureType.toLowerCase()) { case Triangle.NAME -> new Triangle(length); case Square.NAME -> new Square(length); diff --git a/src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java b/src/com/walking/lesson20_exceptions/task2/figure/RegularFigure.java similarity index 86% rename from src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java rename to src/com/walking/lesson20_exceptions/task2/figure/RegularFigure.java index 9966dc09f..56147dacd 100644 --- a/src/com/walking/lesson20_exceptions/task2/figures/RegularFigure.java +++ b/src/com/walking/lesson20_exceptions/task2/figure/RegularFigure.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task2.figures; +package com.walking.lesson20_exceptions.task2.figure; public abstract class RegularFigure { protected final String SPACE = " "; diff --git a/src/com/walking/lesson20_exceptions/task2/figures/Square.java b/src/com/walking/lesson20_exceptions/task2/figure/Square.java similarity index 93% rename from src/com/walking/lesson20_exceptions/task2/figures/Square.java rename to src/com/walking/lesson20_exceptions/task2/figure/Square.java index a3d5c0b27..9cad15c8d 100644 --- a/src/com/walking/lesson20_exceptions/task2/figures/Square.java +++ b/src/com/walking/lesson20_exceptions/task2/figure/Square.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task2.figures; +package com.walking.lesson20_exceptions.task2.figure; public class Square extends RegularFigure { public static final String NAME = "квадрат"; diff --git a/src/com/walking/lesson20_exceptions/task2/figures/Triangle.java b/src/com/walking/lesson20_exceptions/task2/figure/Triangle.java similarity index 94% rename from src/com/walking/lesson20_exceptions/task2/figures/Triangle.java rename to src/com/walking/lesson20_exceptions/task2/figure/Triangle.java index d63609fe2..66f8ef477 100644 --- a/src/com/walking/lesson20_exceptions/task2/figures/Triangle.java +++ b/src/com/walking/lesson20_exceptions/task2/figure/Triangle.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task2.figures; +package com.walking.lesson20_exceptions.task2.figure; public class Triangle extends RegularFigure { public static final String NAME = "треугольник"; diff --git a/src/com/walking/lesson20_exceptions/task3/Main.java b/src/com/walking/lesson20_exceptions/task3/Main.java index f4f62aa5e..263d81668 100644 --- a/src/com/walking/lesson20_exceptions/task3/Main.java +++ b/src/com/walking/lesson20_exceptions/task3/Main.java @@ -1,11 +1,11 @@ package com.walking.lesson20_exceptions.task3; -import com.walking.lesson20_exceptions.task3.exceptions.ArrayValidationException; -import com.walking.lesson20_exceptions.task3.exceptions.UnknownAnimalException; -import com.walking.lesson20_exceptions.task3.animals.Animal; -import com.walking.lesson20_exceptions.task3.animals.Cat; -import com.walking.lesson20_exceptions.task3.animals.Cow; -import com.walking.lesson20_exceptions.task3.animals.Dog; +import com.walking.lesson20_exceptions.task3.exception.ArrayValidationException; +import com.walking.lesson20_exceptions.task3.exception.UnknownAnimalException; +import com.walking.lesson20_exceptions.task3.animal.Animal; +import com.walking.lesson20_exceptions.task3.animal.Cat; +import com.walking.lesson20_exceptions.task3.animal.Cow; +import com.walking.lesson20_exceptions.task3.animal.Dog; /** * Реализуйте любой из вариантов задачи в уроке 18. @@ -19,23 +19,16 @@ public class Main { public static void main(String[] args) throws ArrayValidationException, UnknownAnimalException { Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog(), new Cow(), new Animal(""), null}; - sound(animals); - } - - public static void sound(Animal[] animals) throws ArrayValidationException, UnknownAnimalException { for (int i = 0; i < animals.length; i++) { if (!isValid(animals[i])) { throw new ArrayValidationException("Object is expected at index: " + i); } - if (animals[i] instanceof Cat cat) { - cat.meow(); - } else if (animals[i] instanceof Dog dog) { - dog.woof(); - } else if (animals[i] instanceof Cow cow) { - cow.moo(); - } else { - throw new UnknownAnimalException("Unknown animal"); + switch (animals[i]) { + case Cat cat -> cat.meow(); + case Dog dog -> dog.woof(); + case Cow cow -> cow.moo(); + case null, default -> throw new UnknownAnimalException("Unknown animal"); } } } diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Animal.java b/src/com/walking/lesson20_exceptions/task3/animal/Animal.java similarity index 77% rename from src/com/walking/lesson20_exceptions/task3/animals/Animal.java rename to src/com/walking/lesson20_exceptions/task3/animal/Animal.java index 457860098..0488ca76a 100644 --- a/src/com/walking/lesson20_exceptions/task3/animals/Animal.java +++ b/src/com/walking/lesson20_exceptions/task3/animal/Animal.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task3.animals; +package com.walking.lesson20_exceptions.task3.animal; public class Animal { protected final String sound; diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Cat.java b/src/com/walking/lesson20_exceptions/task3/animal/Cat.java similarity index 73% rename from src/com/walking/lesson20_exceptions/task3/animals/Cat.java rename to src/com/walking/lesson20_exceptions/task3/animal/Cat.java index 98dc7d441..37bc13d64 100644 --- a/src/com/walking/lesson20_exceptions/task3/animals/Cat.java +++ b/src/com/walking/lesson20_exceptions/task3/animal/Cat.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task3.animals; +package com.walking.lesson20_exceptions.task3.animal; public class Cat extends Animal { diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Cow.java b/src/com/walking/lesson20_exceptions/task3/animal/Cow.java similarity index 73% rename from src/com/walking/lesson20_exceptions/task3/animals/Cow.java rename to src/com/walking/lesson20_exceptions/task3/animal/Cow.java index c74894c86..b645420e1 100644 --- a/src/com/walking/lesson20_exceptions/task3/animals/Cow.java +++ b/src/com/walking/lesson20_exceptions/task3/animal/Cow.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task3.animals; +package com.walking.lesson20_exceptions.task3.animal; public class Cow extends Animal { diff --git a/src/com/walking/lesson20_exceptions/task3/animals/Dog.java b/src/com/walking/lesson20_exceptions/task3/animal/Dog.java similarity index 73% rename from src/com/walking/lesson20_exceptions/task3/animals/Dog.java rename to src/com/walking/lesson20_exceptions/task3/animal/Dog.java index f1aa15d5c..fd5022431 100644 --- a/src/com/walking/lesson20_exceptions/task3/animals/Dog.java +++ b/src/com/walking/lesson20_exceptions/task3/animal/Dog.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task3.animals; +package com.walking.lesson20_exceptions.task3.animal; public class Dog extends Animal { diff --git a/src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java b/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java similarity index 72% rename from src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java rename to src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java index cf758189d..329d7515b 100644 --- a/src/com/walking/lesson20_exceptions/task3/exceptions/ArrayValidationException.java +++ b/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task3.exceptions; +package com.walking.lesson20_exceptions.task3.exception; public class ArrayValidationException extends RuntimeException { public ArrayValidationException(String message) { diff --git a/src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java b/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java similarity index 71% rename from src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java rename to src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java index 0e28c4ff5..ead86d85b 100644 --- a/src/com/walking/lesson20_exceptions/task3/exceptions/UnknownAnimalException.java +++ b/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java @@ -1,4 +1,4 @@ -package com.walking.lesson20_exceptions.task3.exceptions; +package com.walking.lesson20_exceptions.task3.exception; public class UnknownAnimalException extends RuntimeException { public UnknownAnimalException(String message) { diff --git a/src/com/walking/lesson21_immutable_object/Main.java b/src/com/walking/lesson21_immutable_object/Main.java index 2983b1dc7..b53448825 100644 --- a/src/com/walking/lesson21_immutable_object/Main.java +++ b/src/com/walking/lesson21_immutable_object/Main.java @@ -1,7 +1,8 @@ package com.walking.lesson21_immutable_object; -import com.walking.lesson21_immutable_object.autos.Car; -import com.walking.lesson21_immutable_object.autos.CarIdentifier; +import com.walking.lesson21_immutable_object.car.Car; +import com.walking.lesson21_immutable_object.car.CarIdentifier; +import com.walking.lesson21_immutable_object.car.CarService; import java.util.Scanner; @@ -30,22 +31,13 @@ public static void main(String[] args) { System.out.print("Номер машины: "); String number = in.nextLine(); - CarIdentifier car = new CarIdentifier(brand, number); - Car car1 = findCar(cars, car); + Car car = new Car(new CarIdentifier(brand, number)); + car = CarService.findCar(cars, car); - if (car1 == null) { + if (car == null) { System.out.println("Машина не найдена!"); } else { - System.out.println(car1); + System.out.println(car); } } - - public static Car findCar(Car[] cars, CarIdentifier car) { - for (Car car1 : cars) { - if (car1.getIdentifier().equals(car)) { - return car1; - } - } - return null; - } -} \ No newline at end of file +} diff --git a/src/com/walking/lesson21_immutable_object/autos/Car.java b/src/com/walking/lesson21_immutable_object/car/Car.java similarity index 58% rename from src/com/walking/lesson21_immutable_object/autos/Car.java rename to src/com/walking/lesson21_immutable_object/car/Car.java index 2a828e3c5..46ed2f9fb 100644 --- a/src/com/walking/lesson21_immutable_object/autos/Car.java +++ b/src/com/walking/lesson21_immutable_object/car/Car.java @@ -1,4 +1,4 @@ -package com.walking.lesson21_immutable_object.autos; +package com.walking.lesson21_immutable_object.car; public class Car { private final CarIdentifier identifier; @@ -9,6 +9,10 @@ public Car(String brand, String owner, String number) { this.owner = owner; } + public Car(CarIdentifier identifier) { + this.identifier = identifier; + } + @Override public String toString() { return "Машина марки " + identifier.getBrand() + ", владелец: " + owner + ", номер: " + identifier.getNumber(); @@ -26,4 +30,21 @@ public void setOwner(String owner) { this.owner = owner; } + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + Car c = (Car) car; + + return identifier.equals(c.identifier); + } } diff --git a/src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java b/src/com/walking/lesson21_immutable_object/car/CarIdentifier.java similarity index 82% rename from src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java rename to src/com/walking/lesson21_immutable_object/car/CarIdentifier.java index b6187f5b3..51ed56339 100644 --- a/src/com/walking/lesson21_immutable_object/autos/CarIdentifier.java +++ b/src/com/walking/lesson21_immutable_object/car/CarIdentifier.java @@ -1,4 +1,4 @@ -package com.walking.lesson21_immutable_object.autos; +package com.walking.lesson21_immutable_object.car; public final class CarIdentifier { private final String brand; @@ -23,9 +23,9 @@ public boolean equals(Object car) { return false; } - CarIdentifier auto = (CarIdentifier) car; + CarIdentifier c = (CarIdentifier) car; - return number.equals(auto.number) && brand.equals(auto.brand); + return number.equals(c.number) && brand.equals(c.brand); } @Override diff --git a/src/com/walking/lesson21_immutable_object/car/CarService.java b/src/com/walking/lesson21_immutable_object/car/CarService.java new file mode 100644 index 000000000..0a41b2f8e --- /dev/null +++ b/src/com/walking/lesson21_immutable_object/car/CarService.java @@ -0,0 +1,13 @@ +package com.walking.lesson21_immutable_object.car; + +public class CarService { + + public static Car findCar(Car[] cars, Car car) { + for (Car c : cars) { + if (c.equals(car)) { + return c; + } + } + return null; + } +} From 0a713f05ac23aaa715494d1259c321a74c4089b4 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 21 Apr 2025 14:04:51 +0300 Subject: [PATCH 049/131] =?UTF-8?q?=D1=83=D1=80=D0=BE=D0=BA=2026,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson26_string_types/task1/Main.java | 22 ++++++++++ .../task1/service/Rectangle.java | 44 +++++++++++++++++++ .../service/UnexpectedNumberException.java | 7 +++ 3 files changed, 73 insertions(+) create mode 100644 src/com/walking/lesson26_string_types/task1/service/Rectangle.java create mode 100644 src/com/walking/lesson26_string_types/task1/service/UnexpectedNumberException.java diff --git a/src/com/walking/lesson26_string_types/task1/Main.java b/src/com/walking/lesson26_string_types/task1/Main.java index 42e1afdbf..5faeab1e3 100644 --- a/src/com/walking/lesson26_string_types/task1/Main.java +++ b/src/com/walking/lesson26_string_types/task1/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson26_string_types.task1; +import com.walking.lesson26_string_types.task1.service.Rectangle; +import com.walking.lesson26_string_types.task1.service.UnexpectedNumberException; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -7,5 +12,22 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + + int length = getNumber(in, "Введите длину: "); + int width = getNumber(in, "Введите ширину: "); + + Rectangle rectangle = new Rectangle(length, width); + System.out.println(rectangle.getRectangle()); + } + + public static int getNumber(Scanner in, String message) throws UnexpectedNumberException { + System.out.print(message); + int num = in.nextInt(); + if (num > 0) { + return num; + } + + throw new UnexpectedNumberException("Число должно быть больше 0"); } } diff --git a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java new file mode 100644 index 000000000..c699f01b6 --- /dev/null +++ b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java @@ -0,0 +1,44 @@ +package com.walking.lesson26_string_types.task1.service; + +public class Rectangle { + private final int length; + private final int width; + private final String SPACE = " "; + private final String LENGTH_SYMBOL = "-"; + private final String WIDTH_SYMBOL = "|"; + + public Rectangle(int length, int width) { + this.length = length; + this.width = width; + } + + /** + * как я поняла, StringBuilder быстрее работает, + * а плюсы StringBuffer'а только в условиях многопоточности раскрываются, что, вроде, не про эту задачу. + * поэтому использовала StringBuilder + * P.S. может, перемудрила с классами, но мне захотелось попробовать поприменять из прошлых уроков штуки:) + */ + + public StringBuilder getRectangle() { + StringBuilder rectangle = getLine(SPACE, LENGTH_SYMBOL); + for (int i = 0; i < width - 2; i++) { + rectangle.append(getLine(WIDTH_SYMBOL, SPACE)); + } + return rectangle.append(getLine(SPACE, LENGTH_SYMBOL)); + } + + private StringBuilder getLine(String side, String center) { + StringBuilder horizontal = new StringBuilder(side); + horizontal.append(center.repeat(length - 2)); + + return horizontal.append(side).append("\n"); + } + + public int getLength() { + return length; + } + + public int getWidth() { + return width; + } +} diff --git a/src/com/walking/lesson26_string_types/task1/service/UnexpectedNumberException.java b/src/com/walking/lesson26_string_types/task1/service/UnexpectedNumberException.java new file mode 100644 index 000000000..16038e851 --- /dev/null +++ b/src/com/walking/lesson26_string_types/task1/service/UnexpectedNumberException.java @@ -0,0 +1,7 @@ +package com.walking.lesson26_string_types.task1.service; + +public class UnexpectedNumberException extends RuntimeException { + public UnexpectedNumberException(String message) { + super(message); + } +} From 148cd1556838997d1f9f568b49f502d3aac861f7 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 21 Apr 2025 14:10:40 +0300 Subject: [PATCH 050/131] =?UTF-8?q?=D1=83=D1=80=D0=BE=D0=BA=2026,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/service/Rectangle.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java index c699f01b6..12530c787 100644 --- a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java +++ b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java @@ -1,8 +1,9 @@ package com.walking.lesson26_string_types.task1.service; public class Rectangle { - private final int length; - private final int width; + private int length; + private int width; + private final String SPACE = " "; private final String LENGTH_SYMBOL = "-"; private final String WIDTH_SYMBOL = "|"; @@ -38,7 +39,15 @@ public int getLength() { return length; } + public void setLength(int length) { + this.length = length; + } + public int getWidth() { return width; } + + public void setWidth(int width) { + this.width = width; + } } From bbf9c2385dc7db6b45ae8ceec732e33f5ccdc191 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 21 Apr 2025 14:12:08 +0300 Subject: [PATCH 051/131] =?UTF-8?q?=D1=83=D1=80=D0=BE=D0=BA=2026,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson26_string_types/task1/Main.java | 3 ++- .../lesson26_string_types/task1/service/Rectangle.java | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/com/walking/lesson26_string_types/task1/Main.java b/src/com/walking/lesson26_string_types/task1/Main.java index 5faeab1e3..fefcd9f50 100644 --- a/src/com/walking/lesson26_string_types/task1/Main.java +++ b/src/com/walking/lesson26_string_types/task1/Main.java @@ -24,10 +24,11 @@ public static void main(String[] args) { public static int getNumber(Scanner in, String message) throws UnexpectedNumberException { System.out.print(message); int num = in.nextInt(); + if (num > 0) { return num; } - + throw new UnexpectedNumberException("Число должно быть больше 0"); } } diff --git a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java index 12530c787..dd664142e 100644 --- a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java +++ b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java @@ -1,13 +1,13 @@ package com.walking.lesson26_string_types.task1.service; public class Rectangle { - private int length; - private int width; - private final String SPACE = " "; private final String LENGTH_SYMBOL = "-"; private final String WIDTH_SYMBOL = "|"; + private int length; + private int width; + public Rectangle(int length, int width) { this.length = length; this.width = width; @@ -22,9 +22,11 @@ public Rectangle(int length, int width) { public StringBuilder getRectangle() { StringBuilder rectangle = getLine(SPACE, LENGTH_SYMBOL); + for (int i = 0; i < width - 2; i++) { rectangle.append(getLine(WIDTH_SYMBOL, SPACE)); } + return rectangle.append(getLine(SPACE, LENGTH_SYMBOL)); } From c5db7fdfede5d3c50b64155129799faa70cd191a Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 21 Apr 2025 17:29:57 +0300 Subject: [PATCH 052/131] =?UTF-8?q?=D1=83=D1=80=D0=BE=D0=BA=2026,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson26_string_types/task2/Main.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java index 7f272e617..0b43b7adf 100644 --- a/src/com/walking/lesson26_string_types/task2/Main.java +++ b/src/com/walking/lesson26_string_types/task2/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson26_string_types.task2; +import java.util.Scanner; + /** * Реализуйте программу, принимающую с клавиатуры строку, * содержащую слова, разделенные пробелом. @@ -18,5 +20,26 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите фразу: "); + String phrase = in.nextLine(); + + System.out.printf("Найдено уникальных слов: %d", countWords(splitPhrase(phrase))); + } + + public static String[] splitPhrase(String phrase) { + phrase = phrase.trim(); + return phrase.split(" "); + } + + public static int countWords(String[] phrase) { + int counter = phrase.length; + for (int i = 0; i <= phrase.length; i++) { + for (int j = i + 1; j < phrase.length; j++) + if (phrase[i].compareToIgnoreCase(phrase[j]) == 0) { + counter--; + } + } + return counter; } } From 5583949f59607140dffc3a46be451cc4c687436a Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 22 Apr 2025 13:07:03 +0300 Subject: [PATCH 053/131] =?UTF-8?q?=D1=83=D1=80=D0=BE=D0=BA=2026,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson26_string_types/task2/Main.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java index 0b43b7adf..1d855c608 100644 --- a/src/com/walking/lesson26_string_types/task2/Main.java +++ b/src/com/walking/lesson26_string_types/task2/Main.java @@ -38,6 +38,7 @@ public static int countWords(String[] phrase) { for (int j = i + 1; j < phrase.length; j++) if (phrase[i].compareToIgnoreCase(phrase[j]) == 0) { counter--; + break; } } return counter; From e9eefe4a94ef428994480a8a74de9d774247be33 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 28 Apr 2025 15:11:00 +0300 Subject: [PATCH 054/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson21_immutable_object/Main.java | 2 +- .../car/CarService.java | 2 +- .../task1/anonymous_class/Main.java | 85 ++++++++++--------- .../task1/inner_class/Main.java | 40 +++++---- .../inner_class/figure/RegularFigure.java | 5 -- .../task1/static_class/Main.java | 5 +- .../task2/static_class/Main.java | 6 +- .../task1/service/Rectangle.java | 8 +- .../lesson26_string_types/task2/Main.java | 25 ++++-- 9 files changed, 97 insertions(+), 81 deletions(-) diff --git a/src/com/walking/lesson21_immutable_object/Main.java b/src/com/walking/lesson21_immutable_object/Main.java index b53448825..17d9939b2 100644 --- a/src/com/walking/lesson21_immutable_object/Main.java +++ b/src/com/walking/lesson21_immutable_object/Main.java @@ -32,7 +32,7 @@ public static void main(String[] args) { String number = in.nextLine(); Car car = new Car(new CarIdentifier(brand, number)); - car = CarService.findCar(cars, car); + car = CarService.find(cars, car); if (car == null) { System.out.println("Машина не найдена!"); diff --git a/src/com/walking/lesson21_immutable_object/car/CarService.java b/src/com/walking/lesson21_immutable_object/car/CarService.java index 0a41b2f8e..87721dbd5 100644 --- a/src/com/walking/lesson21_immutable_object/car/CarService.java +++ b/src/com/walking/lesson21_immutable_object/car/CarService.java @@ -2,7 +2,7 @@ public class CarService { - public static Car findCar(Car[] cars, Car car) { + public static Car find(Car[] cars, Car car) { for (Car c : cars) { if (c.equals(car)) { return c; diff --git a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java index 8582f0a4a..c3eba090d 100644 --- a/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/Main.java @@ -13,7 +13,7 @@ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Введите тип фигуры: "); - String figureType = in.nextLine(); + String shape = in.nextLine(); System.out.print("Введите длину стороны: "); int length = in.nextInt(); @@ -22,51 +22,54 @@ public static void main(String[] args) { return; } - System.out.println(getResult(length, figureType)); + System.out.println(getResult(length, shape)); } - public static String getResult(int length, String figureType) { - switch (figureType.toLowerCase()) { - case "треугольник": - RegularFigure triangle = new RegularFigure() { - @Override - public String getFigure() { - int k = length / 2; - int j = length % 2; - - String triangle = ""; - for (int i = 0; i < length / 2; i++) { - triangle += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; - k--; - j += 2; - } - return triangle + LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; - } - }; - return triangle.getFigure(); + public static String getResult(int length, String shape) { + RegularFigure figure; + switch (shape.toLowerCase()) { + case "треугольник": + figure = getTriangle(length); + break; case "квадрат": - RegularFigure square = new RegularFigure() { - @Override - public String getFigure() { - String horizontal = SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; - String square = horizontal; - for (int i = 0; i < length - 2; i++) { - square += VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; - } - return square + horizontal; - } - }; - return square.getFigure(); - + figure = getSquare(length); + break; default: - RegularFigure unknown = new RegularFigure() { - @Override - public String getFigure() { - return "Неизвестная фигура"; - } - }; - return unknown.getFigure(); + throw new RuntimeException("Unknown shape"); } + return figure.getFigure(); + } + + public static RegularFigure getTriangle(int length) { + return new RegularFigure() { + @Override + public String getFigure() { + int k = length / 2; + int j = length % 2; + + String triangle1 = ""; + for (int i = 0; i < length / 2; i++) { + triangle1 += SPACE.repeat(k) + LEFT_SIDE + SPACE.repeat(j) + RIGHT_SIDE + NEXT_LINE_SYMBOL; + k--; + j += 2; + } + return triangle1 + LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; + } + }; + } + + public static RegularFigure getSquare(int length) { + return new RegularFigure() { + @Override + public String getFigure() { + String horizontal = SPACE + HORIZONTAL.repeat(length - 2) + SPACE + NEXT_LINE_SYMBOL; + String square = horizontal; + for (int i = 0; i < length - 2; i++) { + square += VERTICAL + SPACE.repeat(length - 2) + VERTICAL + NEXT_LINE_SYMBOL; + } + return square + horizontal; + } + }; } } diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java index f10e956e7..dac9cbf75 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/Main.java @@ -11,11 +11,9 @@ */ public class Main { public static void main(String[] args) { - Main main = new Main(); - Scanner in = new Scanner(System.in); System.out.print("Введите тип фигуры: "); - String figureType = in.nextLine(); + String shape = in.nextLine(); System.out.print("Введите длину стороны: "); int length = in.nextInt(); @@ -24,20 +22,23 @@ public static void main(String[] args) { return; } - switch (figureType.toLowerCase()) { - case "треугольник": - System.out.println(main.new Triangle(length).getFigure()); - break; - case "квадрат": - System.out.println(main.new Square(length).getFigure()); - break; - default: - System.out.println("Неизвестная фигура"); - break; - } + System.out.println(createFigure(length, shape)); + } + + public static String createFigure(int length, String shape) { + Main main = new Main(); + RegularFigure figure = switch (shape.toLowerCase()) { + case "треугольник" -> main.new Triangle(length); + case "квадрат" -> main.new Square(length); + default -> throw new RuntimeException("Неизвестная фигура"); + }; + + return figure.getFigure(); } - class Square implements RegularFigure { + private class Square implements RegularFigure { + private final String HORIZONTAL = "-"; + private final String VERTICAL = "|"; private final int length; private Square(int length) { @@ -62,7 +63,10 @@ private String getVerticalSide() { } } - class Triangle implements RegularFigure { + private class Triangle implements RegularFigure { + String RIGHT_SIDE = "\\"; + String LEFT_SIDE = "/"; + String BOTTOM_SIDE = "_"; private final int length; private Triangle(int length) { @@ -71,14 +75,14 @@ private Triangle(int length) { @Override public String getFigure() { - return getTriangle() + getBottomSide(); + return getSides() + getBottomSide(); } private String getBottomSide() { return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE; } - private String getTriangle() { + private String getSides() { int k = length / 2; int j = length % 2; diff --git a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java index 54449dd0c..119cf2418 100644 --- a/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java +++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java @@ -3,11 +3,6 @@ public interface RegularFigure { String SPACE = " "; String NEXT_LINE_SYMBOL = "\n"; - String HORIZONTAL = "-"; - String VERTICAL = "|"; - String RIGHT_SIDE = "\\"; - String LEFT_SIDE = "/"; - String BOTTOM_SIDE = "_"; String getFigure(); } diff --git a/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java b/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java index 63b92d162..e09475143 100644 --- a/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task1/static_class/Main.java @@ -33,8 +33,7 @@ public static RegularFigure getFigure(String figureType) { }; } - - static class Square implements RegularFigure { + private static class Square implements RegularFigure { public String getFigure(int length) { String square = getHorizontalSide(length); for (int i = 0; i < length - 2; i++) { @@ -52,7 +51,7 @@ private String getVerticalSide(int length) { } } - static class Triangle implements RegularFigure { + private static class Triangle implements RegularFigure { public String getFigure(int length) { return getTriangle(length) + getBottomSide(length); } diff --git a/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java b/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java index 3f25102a5..8a31e0f6d 100644 --- a/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java +++ b/src/com/walking/lesson25_nested_classes/task2/static_class/Main.java @@ -20,21 +20,21 @@ public static void soundAll(Animal[] animals) { } } - static class Cat extends Animal { + private static class Cat extends Animal { @Override public void sound() { System.out.println("meow"); } } - static class Dog extends Animal { + private static class Dog extends Animal { @Override public void sound() { System.out.println("woof"); } } - static class Cow extends Animal { + private static class Cow extends Animal { @Override public void sound() { System.out.println("moo"); diff --git a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java index dd664142e..a6dbbd6e8 100644 --- a/src/com/walking/lesson26_string_types/task1/service/Rectangle.java +++ b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java @@ -32,9 +32,13 @@ public StringBuilder getRectangle() { private StringBuilder getLine(String side, String center) { StringBuilder horizontal = new StringBuilder(side); - horizontal.append(center.repeat(length - 2)); + for (int i = 0; i < length - 2; i++) { + horizontal.append(center); + } - return horizontal.append(side).append("\n"); + return horizontal + .append(side) + .append("\n"); } public int getLength() { diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java index 1d855c608..e9ca7ca6c 100644 --- a/src/com/walking/lesson26_string_types/task2/Main.java +++ b/src/com/walking/lesson26_string_types/task2/Main.java @@ -28,19 +28,30 @@ public static void main(String[] args) { } public static String[] splitPhrase(String phrase) { - phrase = phrase.trim(); + phrase = phrase + .trim() + .toLowerCase(); return phrase.split(" "); } public static int countWords(String[] phrase) { - int counter = phrase.length; - for (int i = 0; i <= phrase.length; i++) { - for (int j = i + 1; j < phrase.length; j++) - if (phrase[i].compareToIgnoreCase(phrase[j]) == 0) { - counter--; - break; + int counter = 0; + boolean isEqual = true; + for (int i = 0; i < phrase.length; i++) { + for (int j = i + 1; j < phrase.length; j++) { + if (phrase[i].equals(phrase[j])) { + isEqual = false; } + } + + if (!isEqual) { + counter--; + } + + counter++; + isEqual = true; } + return counter; } } From 453711549e69f9ac46a4bbfc25be5a01079c25bc Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 13 May 2025 12:33:18 +0300 Subject: [PATCH 055/131] lesson 28, task 1 --- .../lesson28_generics1/task1/Main.java | 9 +++++++++ .../task1/service/GenericNum.java | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/com/walking/lesson28_generics1/task1/service/GenericNum.java diff --git a/src/com/walking/lesson28_generics1/task1/Main.java b/src/com/walking/lesson28_generics1/task1/Main.java index 0455c9bea..691a99c0e 100644 --- a/src/com/walking/lesson28_generics1/task1/Main.java +++ b/src/com/walking/lesson28_generics1/task1/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson28_generics1.task1; +import com.walking.lesson28_generics1.task1.service.GenericNum; + /** * Создать обобщенный тип, принимающий в себя любого из наследников Number. * Создать метод, возводящий значение параметризованного типа в степень, @@ -7,5 +9,12 @@ */ public class Main { public static void main(String[] args) { + GenericNum intNum = new GenericNum<>(); + intNum.setNum(11); + System.out.println(intNum.getResult(3)); + + GenericNum longNum = new GenericNum<>(); + longNum.setNum(654L); + System.out.println(longNum.getResult(2)); } } diff --git a/src/com/walking/lesson28_generics1/task1/service/GenericNum.java b/src/com/walking/lesson28_generics1/task1/service/GenericNum.java new file mode 100644 index 000000000..371b83544 --- /dev/null +++ b/src/com/walking/lesson28_generics1/task1/service/GenericNum.java @@ -0,0 +1,19 @@ +package com.walking.lesson28_generics1.task1.service; + +public class GenericNum { + private T num; + + public void setNum(T num) { + this.num = num; + } + + public T getNum() { + return num; + } + + public double getResult(double pow) { + double number = num.doubleValue(); + + return Math.pow(number, pow); + } +} From c93f510c1a3e0d0416dea6264be553ea62799c71 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 13 May 2025 12:55:46 +0300 Subject: [PATCH 056/131] lesson 28, task 2 --- .../walking/lesson28_generics1/task2/Main.java | 14 ++++++++++++++ .../task2/service/GenericObject.java | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/com/walking/lesson28_generics1/task2/service/GenericObject.java diff --git a/src/com/walking/lesson28_generics1/task2/Main.java b/src/com/walking/lesson28_generics1/task2/Main.java index 7f16bed5e..964b7eafa 100644 --- a/src/com/walking/lesson28_generics1/task2/Main.java +++ b/src/com/walking/lesson28_generics1/task2/Main.java @@ -1,10 +1,24 @@ package com.walking.lesson28_generics1.task2; +import com.walking.lesson28_generics1.task2.service.GenericObject; + /** * Создать класс-обертку над объектом любого типа. * Предусмотреть boolean-метод, проверяющий значение объекта на null. */ public class Main { public static void main(String[] args) { + GenericObject stringObj = new GenericObject<>("Hello"); + GenericObject numberObj = new GenericObject<>(null); + print(stringObj); + print(numberObj); + } + + public static void print(GenericObject object) { + if (object.isNull()) { + throw new RuntimeException("Object is null"); + } + + System.out.println(object.getObj()); } } diff --git a/src/com/walking/lesson28_generics1/task2/service/GenericObject.java b/src/com/walking/lesson28_generics1/task2/service/GenericObject.java new file mode 100644 index 000000000..ba8c9b03d --- /dev/null +++ b/src/com/walking/lesson28_generics1/task2/service/GenericObject.java @@ -0,0 +1,17 @@ +package com.walking.lesson28_generics1.task2.service; + +public class GenericObject { + private final T obj; + + public GenericObject(T obj) { + this.obj = obj; + } + + public boolean isNull() { + return obj == null; + } + + public T getObj() { + return obj; + } +} From 0a576e05de13270f5012f7520b9b4ee7dcbc3175 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 13 May 2025 19:49:12 +0300 Subject: [PATCH 057/131] lesson 28, task 3 --- .../lesson28_generics1/task3/Main.java | 6 +++++ .../task3/service/GenericArray.java | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/com/walking/lesson28_generics1/task3/service/GenericArray.java diff --git a/src/com/walking/lesson28_generics1/task3/Main.java b/src/com/walking/lesson28_generics1/task3/Main.java index 0fb329432..272435cde 100644 --- a/src/com/walking/lesson28_generics1/task3/Main.java +++ b/src/com/walking/lesson28_generics1/task3/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson28_generics1.task3; +import com.walking.lesson28_generics1.task3.service.GenericArray; + /** * Реализовать класс для работы с массивом. * Разработать метод, производящий поиск значения в массиве. @@ -8,5 +10,9 @@ */ public class Main { public static void main(String[] args) { + Character[] arr = new Character[] {'a', 'r', 't', '2', 'y', 'u', '-'}; + GenericArray charArr = new GenericArray<>(arr); + System.out.println(charArr.find('y')); + System.out.println(charArr.find('i')); } } diff --git a/src/com/walking/lesson28_generics1/task3/service/GenericArray.java b/src/com/walking/lesson28_generics1/task3/service/GenericArray.java new file mode 100644 index 000000000..071682efa --- /dev/null +++ b/src/com/walking/lesson28_generics1/task3/service/GenericArray.java @@ -0,0 +1,22 @@ +package com.walking.lesson28_generics1.task3.service; + +public class GenericArray { + private final T[] arr; + + public GenericArray(T[] arr) { + this.arr = arr; + } + + public T[] getArr() { + return arr; + } + + public T find(T object) { + for (T obj : arr) { + if (obj.equals(object)) { + return obj; + } + } + throw new RuntimeException("Элемент не найден"); + } +} From 6452514b8ff9a04ad3dc743a0608e83799946872 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 15 May 2025 15:37:22 +0300 Subject: [PATCH 058/131] lesson 29, task 1 --- .../walking/lesson29_generics2/task1/Main.java | 15 +++++++++++++++ .../task1/service/Generic1.java | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/com/walking/lesson29_generics2/task1/service/Generic1.java diff --git a/src/com/walking/lesson29_generics2/task1/Main.java b/src/com/walking/lesson29_generics2/task1/Main.java index 70bf6cf88..adc97f652 100644 --- a/src/com/walking/lesson29_generics2/task1/Main.java +++ b/src/com/walking/lesson29_generics2/task1/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson29_generics2.task1; +import com.walking.lesson29_generics2.task1.service.Generic1; + /** * Реализуйте обобщенный тип, хранящий параметризованное поле. * Также в классе Main реализуйте параметризованый метод, @@ -10,5 +12,18 @@ */ public class Main { public static void main(String[] args) { + Generic1 genericString = new Generic1<>("Hello"); + System.out.println(getSmth(genericString, "Okay")); + Generic1 genericInt = new Generic1<>(null); + System.out.println(getSmth(genericInt, 8)); + } + + public static T getSmth(Generic1 generic, T object) { + T something = generic.getObject(); + if (something == null) { + return object; + } + + return something; } } diff --git a/src/com/walking/lesson29_generics2/task1/service/Generic1.java b/src/com/walking/lesson29_generics2/task1/service/Generic1.java new file mode 100644 index 000000000..b736cdfb8 --- /dev/null +++ b/src/com/walking/lesson29_generics2/task1/service/Generic1.java @@ -0,0 +1,13 @@ +package com.walking.lesson29_generics2.task1.service; + +public class Generic1 { + private final T object; + + public Generic1(T object) { + this.object = object; + } + + public T getObject() { + return object; + } +} From 80bd8aa0b2756c313abfe01c784eb3e4a712bacf Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 15 May 2025 15:52:21 +0300 Subject: [PATCH 059/131] lesson 29, task 2 --- .../lesson29_generics2/task2/Main.java | 12 ++++++++++++ .../task2/service/GenericNum.java | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/com/walking/lesson29_generics2/task2/service/GenericNum.java diff --git a/src/com/walking/lesson29_generics2/task2/Main.java b/src/com/walking/lesson29_generics2/task2/Main.java index 5a81839d8..731d5532e 100644 --- a/src/com/walking/lesson29_generics2/task2/Main.java +++ b/src/com/walking/lesson29_generics2/task2/Main.java @@ -1,5 +1,8 @@ package com.walking.lesson29_generics2.task2; + +import com.walking.lesson29_generics2.task2.service.GenericNum; + /** * Используя Задачу 1 из урока Generics. * Часть I, реализуйте в Main метод, принимающий аргументом объект подходящего @@ -8,5 +11,14 @@ */ public class Main { public static void main(String[] args) { + GenericNum num = getGeneric(7); + System.out.println(num.getResult(3)); + + num = getGeneric(654L); + System.out.println(num.getResult(2)); + } + + public static GenericNum getGeneric(Number num) { + return new GenericNum<>(num); } } diff --git a/src/com/walking/lesson29_generics2/task2/service/GenericNum.java b/src/com/walking/lesson29_generics2/task2/service/GenericNum.java new file mode 100644 index 000000000..3d12c03fc --- /dev/null +++ b/src/com/walking/lesson29_generics2/task2/service/GenericNum.java @@ -0,0 +1,19 @@ +package com.walking.lesson29_generics2.task2.service; + +public class GenericNum { + private final T num; + + public GenericNum(T num) { + this.num = num; + } + + public T getNum() { + return num; + } + + public double getResult(double pow) { + double number = num.doubleValue(); + + return Math.pow(number, pow); + } +} From 25abfcd77512daba6b78df8cd1d4930570d9fd40 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 28 May 2025 14:28:41 +0300 Subject: [PATCH 060/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson26_string_types/task2/Main.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java index e9ca7ca6c..cd6b27e2e 100644 --- a/src/com/walking/lesson26_string_types/task2/Main.java +++ b/src/com/walking/lesson26_string_types/task2/Main.java @@ -28,30 +28,34 @@ public static void main(String[] args) { } public static String[] splitPhrase(String phrase) { - phrase = phrase - .trim() - .toLowerCase(); - return phrase.split(" "); + return phrase.trim() + .toLowerCase() + .split(" "); } public static int countWords(String[] phrase) { int counter = 0; - boolean isEqual = true; + boolean isEqual; for (int i = 0; i < phrase.length; i++) { - for (int j = i + 1; j < phrase.length; j++) { - if (phrase[i].equals(phrase[j])) { - isEqual = false; - } - } + isEqual = isEqual(phrase, i); if (!isEqual) { counter--; } counter++; - isEqual = true; } return counter; } + + public static boolean isEqual(String[] phrase, int num) { + for (int i = num + 1; i < phrase.length; i++) { + if (phrase[num].equals(phrase[i])) { + return false; + } + } + + return true; + } } From 4a00c9503a1bc9ba8ff5898a3f98c9c2fedbfe5c Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 28 May 2025 14:34:43 +0300 Subject: [PATCH 061/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson28_generics1/task1/Main.java | 10 +++++----- .../{GenericNum.java => GenericNumber.java} | 4 ++-- src/com/walking/lesson28_generics1/task2/Main.java | 2 +- .../task2/service/GenericObject.java | 2 +- .../task3/service/GenericArray.java | 2 +- src/com/walking/lesson29_generics2/task1/Main.java | 14 +++++++------- .../task1/service/{Generic1.java => Generic.java} | 4 ++-- src/com/walking/lesson29_generics2/task2/Main.java | 12 ++++++------ .../{GenericNum.java => GenericNumber.java} | 6 +++--- 9 files changed, 28 insertions(+), 28 deletions(-) rename src/com/walking/lesson28_generics1/task1/service/{GenericNum.java => GenericNumber.java} (76%) rename src/com/walking/lesson29_generics2/task1/service/{Generic1.java => Generic.java} (75%) rename src/com/walking/lesson29_generics2/task2/service/{GenericNum.java => GenericNumber.java} (67%) diff --git a/src/com/walking/lesson28_generics1/task1/Main.java b/src/com/walking/lesson28_generics1/task1/Main.java index 691a99c0e..c16a63f4b 100644 --- a/src/com/walking/lesson28_generics1/task1/Main.java +++ b/src/com/walking/lesson28_generics1/task1/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson28_generics1.task1; -import com.walking.lesson28_generics1.task1.service.GenericNum; +import com.walking.lesson28_generics1.task1.service.GenericNumber; /** * Создать обобщенный тип, принимающий в себя любого из наследников Number. @@ -9,12 +9,12 @@ */ public class Main { public static void main(String[] args) { - GenericNum intNum = new GenericNum<>(); + GenericNumber intNum = new GenericNumber<>(); intNum.setNum(11); - System.out.println(intNum.getResult(3)); + System.out.println(intNum.getPow(3)); - GenericNum longNum = new GenericNum<>(); + GenericNumber longNum = new GenericNumber<>(); longNum.setNum(654L); - System.out.println(longNum.getResult(2)); + System.out.println(longNum.getPow(2)); } } diff --git a/src/com/walking/lesson28_generics1/task1/service/GenericNum.java b/src/com/walking/lesson28_generics1/task1/service/GenericNumber.java similarity index 76% rename from src/com/walking/lesson28_generics1/task1/service/GenericNum.java rename to src/com/walking/lesson28_generics1/task1/service/GenericNumber.java index 371b83544..2c3cdcf3c 100644 --- a/src/com/walking/lesson28_generics1/task1/service/GenericNum.java +++ b/src/com/walking/lesson28_generics1/task1/service/GenericNumber.java @@ -1,6 +1,6 @@ package com.walking.lesson28_generics1.task1.service; -public class GenericNum { +public class GenericNumber { private T num; public void setNum(T num) { @@ -11,7 +11,7 @@ public T getNum() { return num; } - public double getResult(double pow) { + public double getPow(double pow) { double number = num.doubleValue(); return Math.pow(number, pow); diff --git a/src/com/walking/lesson28_generics1/task2/Main.java b/src/com/walking/lesson28_generics1/task2/Main.java index 964b7eafa..975d16a73 100644 --- a/src/com/walking/lesson28_generics1/task2/Main.java +++ b/src/com/walking/lesson28_generics1/task2/Main.java @@ -19,6 +19,6 @@ public static void print(GenericObject object) { throw new RuntimeException("Object is null"); } - System.out.println(object.getObj()); + System.out.println(object.get()); } } diff --git a/src/com/walking/lesson28_generics1/task2/service/GenericObject.java b/src/com/walking/lesson28_generics1/task2/service/GenericObject.java index ba8c9b03d..d878b56b3 100644 --- a/src/com/walking/lesson28_generics1/task2/service/GenericObject.java +++ b/src/com/walking/lesson28_generics1/task2/service/GenericObject.java @@ -11,7 +11,7 @@ public boolean isNull() { return obj == null; } - public T getObj() { + public T get() { return obj; } } diff --git a/src/com/walking/lesson28_generics1/task3/service/GenericArray.java b/src/com/walking/lesson28_generics1/task3/service/GenericArray.java index 071682efa..fb4792368 100644 --- a/src/com/walking/lesson28_generics1/task3/service/GenericArray.java +++ b/src/com/walking/lesson28_generics1/task3/service/GenericArray.java @@ -7,7 +7,7 @@ public GenericArray(T[] arr) { this.arr = arr; } - public T[] getArr() { + public T[] get() { return arr; } diff --git a/src/com/walking/lesson29_generics2/task1/Main.java b/src/com/walking/lesson29_generics2/task1/Main.java index adc97f652..e97c71502 100644 --- a/src/com/walking/lesson29_generics2/task1/Main.java +++ b/src/com/walking/lesson29_generics2/task1/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson29_generics2.task1; -import com.walking.lesson29_generics2.task1.service.Generic1; +import com.walking.lesson29_generics2.task1.service.Generic; /** * Реализуйте обобщенный тип, хранящий параметризованное поле. @@ -12,18 +12,18 @@ */ public class Main { public static void main(String[] args) { - Generic1 genericString = new Generic1<>("Hello"); + Generic genericString = new Generic<>("Hello"); System.out.println(getSmth(genericString, "Okay")); - Generic1 genericInt = new Generic1<>(null); + Generic genericInt = new Generic<>(null); System.out.println(getSmth(genericInt, 8)); } - public static T getSmth(Generic1 generic, T object) { - T something = generic.getObject(); - if (something == null) { + public static T getSmth(Generic generic, T object) { + T genericObject = generic.getObject(); + if (genericObject == null) { return object; } - return something; + return genericObject; } } diff --git a/src/com/walking/lesson29_generics2/task1/service/Generic1.java b/src/com/walking/lesson29_generics2/task1/service/Generic.java similarity index 75% rename from src/com/walking/lesson29_generics2/task1/service/Generic1.java rename to src/com/walking/lesson29_generics2/task1/service/Generic.java index b736cdfb8..019766e24 100644 --- a/src/com/walking/lesson29_generics2/task1/service/Generic1.java +++ b/src/com/walking/lesson29_generics2/task1/service/Generic.java @@ -1,9 +1,9 @@ package com.walking.lesson29_generics2.task1.service; -public class Generic1 { +public class Generic { private final T object; - public Generic1(T object) { + public Generic(T object) { this.object = object; } diff --git a/src/com/walking/lesson29_generics2/task2/Main.java b/src/com/walking/lesson29_generics2/task2/Main.java index 731d5532e..47e9430e5 100644 --- a/src/com/walking/lesson29_generics2/task2/Main.java +++ b/src/com/walking/lesson29_generics2/task2/Main.java @@ -1,7 +1,7 @@ package com.walking.lesson29_generics2.task2; -import com.walking.lesson29_generics2.task2.service.GenericNum; +import com.walking.lesson29_generics2.task2.service.GenericNumber; /** * Используя Задачу 1 из урока Generics. @@ -11,14 +11,14 @@ */ public class Main { public static void main(String[] args) { - GenericNum num = getGeneric(7); - System.out.println(num.getResult(3)); + GenericNumber num = getGeneric(7); + System.out.println(num.getPow(3)); num = getGeneric(654L); - System.out.println(num.getResult(2)); + System.out.println(num.getPow(2)); } - public static GenericNum getGeneric(Number num) { - return new GenericNum<>(num); + public static GenericNumber getGeneric(Number num) { + return new GenericNumber<>(num); } } diff --git a/src/com/walking/lesson29_generics2/task2/service/GenericNum.java b/src/com/walking/lesson29_generics2/task2/service/GenericNumber.java similarity index 67% rename from src/com/walking/lesson29_generics2/task2/service/GenericNum.java rename to src/com/walking/lesson29_generics2/task2/service/GenericNumber.java index 3d12c03fc..d65e56667 100644 --- a/src/com/walking/lesson29_generics2/task2/service/GenericNum.java +++ b/src/com/walking/lesson29_generics2/task2/service/GenericNumber.java @@ -1,9 +1,9 @@ package com.walking.lesson29_generics2.task2.service; -public class GenericNum { +public class GenericNumber { private final T num; - public GenericNum(T num) { + public GenericNumber(T num) { this.num = num; } @@ -11,7 +11,7 @@ public T getNum() { return num; } - public double getResult(double pow) { + public double getPow(double pow) { double number = num.doubleValue(); return Math.pow(number, pow); From 6d74fe03eabd12dbd39731e57e0542e0f0ebf6a4 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 28 May 2025 14:59:24 +0300 Subject: [PATCH 062/131] lesson 30, task 1 --- .../walking/lesson30_regex/task1easy/Main.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/com/walking/lesson30_regex/task1easy/Main.java b/src/com/walking/lesson30_regex/task1easy/Main.java index 6a988bb7e..f3dbbd6ed 100644 --- a/src/com/walking/lesson30_regex/task1easy/Main.java +++ b/src/com/walking/lesson30_regex/task1easy/Main.java @@ -1,5 +1,8 @@ package com.walking.lesson30_regex.task1easy; +import java.util.Scanner; +import java.util.regex.Pattern; + /** * Реализуйте boolean-метод, валидирующий входящую строку. * Метод должен возвращать true, @@ -12,5 +15,19 @@ */ public class Main { public static void main(String[] args) { + String regex = "^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$"; + Scanner in = new Scanner(System.in); + System.out.print("Введите номер телефона: "); + String phrase = in.nextLine(); + + if (isPhoneNumber(phrase, regex)) { + System.out.println("Всё верно."); + } else { + throw new RuntimeException("Ошибка в данных."); + } + } + + public static boolean isPhoneNumber(String phrase, String regex) { + return Pattern.matches(regex, phrase); } } From 1b40cb1caa7ae89996b29767abe2f7a6cf6602ef Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 29 May 2025 15:07:36 +0300 Subject: [PATCH 063/131] lesson 30, task 2 --- .../lesson30_regex/task1easy/Main.java | 8 ++-- .../lesson30_regex/task1hard/Main.java | 39 +++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/com/walking/lesson30_regex/task1easy/Main.java b/src/com/walking/lesson30_regex/task1easy/Main.java index f3dbbd6ed..5043f76d3 100644 --- a/src/com/walking/lesson30_regex/task1easy/Main.java +++ b/src/com/walking/lesson30_regex/task1easy/Main.java @@ -18,16 +18,16 @@ public static void main(String[] args) { String regex = "^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$"; Scanner in = new Scanner(System.in); System.out.print("Введите номер телефона: "); - String phrase = in.nextLine(); + String number = in.nextLine(); - if (isPhoneNumber(phrase, regex)) { + if (isPhoneNumber(number, regex)) { System.out.println("Всё верно."); } else { throw new RuntimeException("Ошибка в данных."); } } - public static boolean isPhoneNumber(String phrase, String regex) { - return Pattern.matches(regex, phrase); + public static boolean isPhoneNumber(String number, String regex) { + return Pattern.matches(regex, number); } } diff --git a/src/com/walking/lesson30_regex/task1hard/Main.java b/src/com/walking/lesson30_regex/task1hard/Main.java index 3480d69c3..a01f4f4fc 100644 --- a/src/com/walking/lesson30_regex/task1hard/Main.java +++ b/src/com/walking/lesson30_regex/task1hard/Main.java @@ -1,5 +1,8 @@ package com.walking.lesson30_regex.task1hard; +import java.util.Scanner; +import java.util.regex.Pattern; + /** * Реализуйте boolean-метод, валидирующий входящую строку. * Метод должен возвращать true, @@ -16,5 +19,41 @@ */ public class Main { public static void main(String[] args) { + String regex = "^\\+7\\s?\\(?\\d{3}\\)?\\s?\\d{3}-?\\d{2}-?\\d{2}$"; + Scanner in = new Scanner(System.in); + System.out.print("Введите номер телефона: "); + String number = in.nextLine(); + + if (isPhoneNumber(number, regex)) { + System.out.println("Всё верно."); + } else { + throw new RuntimeException("Ошибка в данных."); + } + } + + public static boolean isPhoneNumber(String number, String regex) { + return Pattern.matches(regex, number) + && isValidSpase(number) && isValidBrackets(number) && isValidHyphens(number); + } + + private static boolean isValidSpase(String number) { + if (number.contains(" ")) { + return number.matches("\\S+\\s\\S+\\s\\S+"); + } + return true; + } + + private static boolean isValidBrackets(String number) { + if (number.contains("(") || number.contains(")")) { + return number.matches("[^()]+\\([^()]+\\)[^()]+"); + } + return true; + } + + private static boolean isValidHyphens(String number) { + if (number.contains("-")) { + return number.matches("[^-]+-[^-]+-[^-]+"); + } + return true; } } From 2e0b784deb3dcc7a5ac59cf1c2501b99acea80b9 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 29 May 2025 17:18:49 +0300 Subject: [PATCH 064/131] lesson 30, task 3 --- .../walking/lesson30_regex/task2/Main.java | 35 +++++++++++++++++++ .../task2/exeption/InvalidFullName.java | 7 ++++ .../task2/service/FullName.java | 29 +++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java create mode 100644 src/com/walking/lesson30_regex/task2/service/FullName.java diff --git a/src/com/walking/lesson30_regex/task2/Main.java b/src/com/walking/lesson30_regex/task2/Main.java index c101f97f4..b9a8d626c 100644 --- a/src/com/walking/lesson30_regex/task2/Main.java +++ b/src/com/walking/lesson30_regex/task2/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson30_regex.task2; +import com.walking.lesson30_regex.task2.exeption.InvalidFullName; +import com.walking.lesson30_regex.task2.service.FullName; + +import java.util.Scanner; + /** * Реализуйте метод для работы с ФИО. * Входным параметром должна являться строка, @@ -13,6 +18,36 @@ * Если невалидна – бросьте из метода исключение, указывающее на ошибку валидации. */ public class Main { + private static final String FULL_NAME_REGEX = "[А-Я][А-Яа-я-]* [А-Я][а-я]* [А-Я][а-я]*"; + private static final String NAME_REGEX = "[А-Я][а-я]*"; + private static final String DOUBLE_SURNAME_REGEX = "[А-Я][а-я]*-[А-Я][а-я]*"; + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите имя: "); + String fullName = in.nextLine(); + isFullNameValid(fullName).printFullName(); + } + + public static FullName isFullNameValid(String fullName) { + if (fullName.matches(FULL_NAME_REGEX)) { + String[] fullNameArr = fullName.split(" "); + if (isSurnameValid(fullNameArr[0]) && isNameValid(fullNameArr[1]) && isNameValid(fullNameArr[2])) { + return new FullName(fullNameArr[0], fullNameArr[1], fullNameArr[2]); + } + } + throw new InvalidFullName("Имя указано некорректно."); + } + + public static boolean isSurnameValid(String surname) { + if (surname.matches(DOUBLE_SURNAME_REGEX)) { + return true; + } + + return isNameValid(surname); + } + + public static boolean isNameValid(String name) { + return name.matches(NAME_REGEX); } } diff --git a/src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java new file mode 100644 index 000000000..cf36b9524 --- /dev/null +++ b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java @@ -0,0 +1,7 @@ +package com.walking.lesson30_regex.task2.exeption; + +public class InvalidFullName extends RuntimeException { + public InvalidFullName(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson30_regex/task2/service/FullName.java b/src/com/walking/lesson30_regex/task2/service/FullName.java new file mode 100644 index 000000000..4dfba3009 --- /dev/null +++ b/src/com/walking/lesson30_regex/task2/service/FullName.java @@ -0,0 +1,29 @@ +package com.walking.lesson30_regex.task2.service; + +public class FullName { + private final String name; + private final String surname; + private final String patronymic; + + public FullName(String surname, String name, String patronymic) { + this.name = name; + this.surname = surname; + this.patronymic = patronymic; + } + + public String getName() { + return name; + } + + public String getSurname() { + return surname; + } + + public String getPatronymic() { + return patronymic; + } + + public void printFullName() { + System.out.println(surname + " " + name + " " + patronymic); + } +} From c6d69e394a9ba62ba35b48a9502a66998d1315a9 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 9 Jun 2025 15:11:19 +0300 Subject: [PATCH 065/131] lesson 30, task 3 --- .../lesson30_regex/task1easy/Main.java | 2 +- .../lesson30_regex/task1hard/Main.java | 4 +- .../walking/lesson30_regex/task3/Main.java | 67 +++++++++++++++++++ .../task3/exception/InvalidWordException.java | 7 ++ 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 src/com/walking/lesson30_regex/task3/exception/InvalidWordException.java diff --git a/src/com/walking/lesson30_regex/task1easy/Main.java b/src/com/walking/lesson30_regex/task1easy/Main.java index 5043f76d3..efa1a32e3 100644 --- a/src/com/walking/lesson30_regex/task1easy/Main.java +++ b/src/com/walking/lesson30_regex/task1easy/Main.java @@ -15,7 +15,7 @@ */ public class Main { public static void main(String[] args) { - String regex = "^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$"; + String regex = "^\\+7 \\(\\d{3}\\) \\d{3}-\\d{2}-\\d{2}$"; Scanner in = new Scanner(System.in); System.out.print("Введите номер телефона: "); String number = in.nextLine(); diff --git a/src/com/walking/lesson30_regex/task1hard/Main.java b/src/com/walking/lesson30_regex/task1hard/Main.java index a01f4f4fc..e190d12a6 100644 --- a/src/com/walking/lesson30_regex/task1hard/Main.java +++ b/src/com/walking/lesson30_regex/task1hard/Main.java @@ -19,7 +19,7 @@ */ public class Main { public static void main(String[] args) { - String regex = "^\\+7\\s?\\(?\\d{3}\\)?\\s?\\d{3}-?\\d{2}-?\\d{2}$"; + String regex = "^\\+7 ?\\(?\\d{3}\\)? ?\\d{3}-?\\d{2}-?\\d{2}$"; Scanner in = new Scanner(System.in); System.out.print("Введите номер телефона: "); String number = in.nextLine(); @@ -38,7 +38,7 @@ public static boolean isPhoneNumber(String number, String regex) { private static boolean isValidSpase(String number) { if (number.contains(" ")) { - return number.matches("\\S+\\s\\S+\\s\\S+"); + return number.matches("\\S+ \\S+ \\S+"); } return true; } diff --git a/src/com/walking/lesson30_regex/task3/Main.java b/src/com/walking/lesson30_regex/task3/Main.java index 2af6da998..ce1c5b30c 100644 --- a/src/com/walking/lesson30_regex/task3/Main.java +++ b/src/com/walking/lesson30_regex/task3/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson30_regex.task3; +import com.walking.lesson30_regex.task3.exception.InvalidWordException; + +import java.util.Scanner; + /** * Реализуйте задачу * ... @@ -12,6 +16,69 @@ * должно быть выброшено исключение. */ public class Main { + private static final String WORD = "[а-яa-z]+"; + private static final String WORD_WITH_HYPHENS = "[а-яa-z][а-яa-z-]+[а-яa-z]"; + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите фразу: "); + String phrase = in.nextLine() + .trim() + .toLowerCase(); + + System.out.printf("Найдено уникальных слов: %d", countWords(validatePhrase(phrase))); + } + + public static int countWords(String[] phrase) { + int counter = 0; + boolean isEqual; + for (int i = 0; i < phrase.length; i++) { + isEqual = isEqual(phrase, i); + + if (!isEqual) { + counter--; + } + + counter++; + } + + return counter; + } + + public static String[] validatePhrase(String phrase) { + String[] words = phrase.split("\\s+"); + for (String word : words) { + if (!validateWord(word)) { + throw new InvalidWordException("Некорректное слово: " + word); + } + } + return words; + } + + public static boolean validateWord(String word) { + if (!word.contains("-")) { + return word.matches(WORD); + } else { + if (!word.matches(WORD_WITH_HYPHENS)) { + throw new InvalidWordException("Некорректное слово: " + word); + } + + for (String wordPart : word.split("-")) { + if (!wordPart.matches(WORD)) { + throw new InvalidWordException("Некорректное слово: " + wordPart); + } + } + } + return true; + } + + public static boolean isEqual(String[] phrase, int num) { + for (int i = num + 1; i < phrase.length; i++) { + if (phrase[num].equals(phrase[i])) { + return false; + } + } + + return true; } } diff --git a/src/com/walking/lesson30_regex/task3/exception/InvalidWordException.java b/src/com/walking/lesson30_regex/task3/exception/InvalidWordException.java new file mode 100644 index 000000000..58d7d5bab --- /dev/null +++ b/src/com/walking/lesson30_regex/task3/exception/InvalidWordException.java @@ -0,0 +1,7 @@ +package com.walking.lesson30_regex.task3.exception; + +public class InvalidWordException extends RuntimeException { + public InvalidWordException(String message) { + super(message); + } +} From bfd510053ab4c8164c774d8536667869b07630e6 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 10 Jun 2025 20:27:53 +0300 Subject: [PATCH 066/131] lesson 31 --- src/com/walking/lesson31_io_streams/Main.java | 59 ++++++++++++++++++- .../exeption/WrongTypeExeption.java | 7 +++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson31_io_streams/exeption/WrongTypeExeption.java diff --git a/src/com/walking/lesson31_io_streams/Main.java b/src/com/walking/lesson31_io_streams/Main.java index 3d058d910..9cd0a46ed 100644 --- a/src/com/walking/lesson31_io_streams/Main.java +++ b/src/com/walking/lesson31_io_streams/Main.java @@ -1,9 +1,66 @@ package com.walking.lesson31_io_streams; +import com.walking.lesson31_io_streams.exeption.WrongTypeExeption; + +import java.io.IOException; + /** * Чтение данных с помощью System.in и приведение к примитивным типам или строкам */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + System.out.println(readChar()); + System.out.println(readByte()); + System.out.println(readInt()); + System.out.println(readString()); + System.out.println(readBoolean()); + + } + + public static byte readByte() throws IOException { + return Byte.parseByte(readString()); + } + + public static int readInt() throws IOException { + return Integer.parseInt(readString()); + } + + public static char readChar() throws IOException { + String string = readString(); + + if (string.length() == 1 || string.length() == 2 && string.charAt(1) == '\n') { + return string.charAt(0); + } + throw new WrongTypeExeption("%s не может быть представлено в виде символа".formatted(string)); + } + + public static boolean readBoolean() throws IOException { + String string = readString(); + + if ("false".equalsIgnoreCase(string)) { + return false; + } + + if ("true".equalsIgnoreCase(string)) { + return true; + } + throw new WrongTypeExeption("%s не похоже на boolean".formatted(string)); + } + + public static String readString() throws IOException { + StringBuilder stringBuilder = new StringBuilder(); + boolean isFinished = false; + + while (!isFinished) { + char ch = (char) System.in.read(); + + if (ch == '\n') { + isFinished = true; + } else { + stringBuilder.append(ch); + } + } + + return stringBuilder.toString(); } } diff --git a/src/com/walking/lesson31_io_streams/exeption/WrongTypeExeption.java b/src/com/walking/lesson31_io_streams/exeption/WrongTypeExeption.java new file mode 100644 index 000000000..5533023e6 --- /dev/null +++ b/src/com/walking/lesson31_io_streams/exeption/WrongTypeExeption.java @@ -0,0 +1,7 @@ +package com.walking.lesson31_io_streams.exeption; + +public class WrongTypeExeption extends RuntimeException { + public WrongTypeExeption(String message) { + super(message); + } +} From cb2ee42f948e1ef64ee1c4696b7d71e7aaa12ae9 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 11 Jun 2025 15:46:02 +0300 Subject: [PATCH 067/131] lesson 31 --- src/com/walking/lesson31_io_streams/Main.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/com/walking/lesson31_io_streams/Main.java b/src/com/walking/lesson31_io_streams/Main.java index 9cd0a46ed..fc2daf0d6 100644 --- a/src/com/walking/lesson31_io_streams/Main.java +++ b/src/com/walking/lesson31_io_streams/Main.java @@ -3,18 +3,19 @@ import com.walking.lesson31_io_streams.exeption.WrongTypeExeption; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; /** * Чтение данных с помощью System.in и приведение к примитивным типам или строкам */ public class Main { public static void main(String[] args) throws IOException { + System.out.println(readString()); + System.out.println(readBoolean()); System.out.println(readChar()); System.out.println(readByte()); System.out.println(readInt()); - System.out.println(readString()); - System.out.println(readBoolean()); - } public static byte readByte() throws IOException { @@ -49,10 +50,11 @@ public static boolean readBoolean() throws IOException { public static String readString() throws IOException { StringBuilder stringBuilder = new StringBuilder(); + Reader reader = new InputStreamReader(System.in); boolean isFinished = false; while (!isFinished) { - char ch = (char) System.in.read(); + char ch = (char) reader.read(); if (ch == '\n') { isFinished = true; From d4a4804211f94460d9eab48b9872dd84bae95372 Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 13 Jun 2025 19:36:58 +0300 Subject: [PATCH 068/131] lesson 32, task 1 --- .../walking/lesson32_files_1/task1/Main.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/com/walking/lesson32_files_1/task1/Main.java b/src/com/walking/lesson32_files_1/task1/Main.java index 17fafb884..8a9cb25e3 100644 --- a/src/com/walking/lesson32_files_1/task1/Main.java +++ b/src/com/walking/lesson32_files_1/task1/Main.java @@ -1,11 +1,39 @@ package com.walking.lesson32_files_1.task1; +import com.walking.lesson19_object_methods.car.Car; + +import java.io.FileOutputStream; +import java.io.IOException; + /** * Используя класс Car (или создав новый класс для сущности «машина», на ваше усмотрение) из задачи * ... * Реализуйте сохранение массива машин в файл carCatalog.txt */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + + saveCars(cars); + } + + public static void saveCars(Car[] cars) throws IOException { + try (FileOutputStream fos = new FileOutputStream("./resources/carCatalog.txt")) { + for (Car car : cars) { + String information = car.toString() + "\n"; + byte[] buffer = information.getBytes(); + fos.write(buffer, 0, buffer.length); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + System.out.println("Какая-то ошибка."); + } } } From 407cfa3d039bd40677afd78fc4ad6b44364a4f48 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 14 Jun 2025 11:41:44 +0300 Subject: [PATCH 069/131] lesson 32, task 2 --- .../lesson19_object_methods/car/Car.java | 11 ++++++ .../walking/lesson32_files_1/task2/Main.java | 34 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/com/walking/lesson19_object_methods/car/Car.java b/src/com/walking/lesson19_object_methods/car/Car.java index ef13d12f4..4ca932046 100644 --- a/src/com/walking/lesson19_object_methods/car/Car.java +++ b/src/com/walking/lesson19_object_methods/car/Car.java @@ -44,4 +44,15 @@ public int hashCode() { return result; } + public final String getBrand() { + return brand; + } + + public final String getOwner() { + return owner; + } + + public final String getNumber() { + return number; + } } diff --git a/src/com/walking/lesson32_files_1/task2/Main.java b/src/com/walking/lesson32_files_1/task2/Main.java index b3fb29921..709061613 100644 --- a/src/com/walking/lesson32_files_1/task2/Main.java +++ b/src/com/walking/lesson32_files_1/task2/Main.java @@ -1,10 +1,42 @@ package com.walking.lesson32_files_1.task2; +import com.walking.lesson19_object_methods.car.Car; + +import java.io.FileReader; +import java.io.IOException; + /** * Используя Задачу 1, реализуйте чтение из carCatalog.txt, * реализовав сохранение данных в массив Car. */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + System.out.println(readFile("./resources/carCatalog.txt")); + Car[] cars = getCars(readFile("./resources/carCatalog.txt")); + System.out.println(cars[0].getBrand()); + System.out.println(cars[0].getOwner()); + System.out.println(cars[0].getNumber()); + } + + public static String readFile(String nameFile) throws IOException { + StringBuilder cars = new StringBuilder(""); + int i; + try (FileReader reader = new FileReader(nameFile)) { + while ((i = reader.read()) != -1) { + cars.append((char) i); + } + } + return cars.toString().trim(); + } + + public static Car[] getCars(String cars) { + String[] carInformation = cars.split("\n"); + Car[] carsArr = new Car[carInformation.length]; + for(int i = 0; i < carsArr.length; i++) { + String information = carInformation[i].replaceAll(",", ""); + String[] car = information.split(" "); + carsArr[i] = new Car(car[2], car[4] + " " + car[5], car[7]); + } + return carsArr; } } From e3b5269af2e3aa001874229fb94290b06c152780 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 14 Jun 2025 11:46:25 +0300 Subject: [PATCH 070/131] lesson 32, task 2 --- src/com/walking/lesson32_files_1/task2/Main.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/walking/lesson32_files_1/task2/Main.java b/src/com/walking/lesson32_files_1/task2/Main.java index 709061613..5d686ba17 100644 --- a/src/com/walking/lesson32_files_1/task2/Main.java +++ b/src/com/walking/lesson32_files_1/task2/Main.java @@ -4,6 +4,7 @@ import java.io.FileReader; import java.io.IOException; +import java.util.Scanner; /** * Используя Задачу 1, реализуйте чтение из carCatalog.txt, @@ -11,11 +12,14 @@ */ public class Main { public static void main(String[] args) throws IOException { - System.out.println(readFile("./resources/carCatalog.txt")); Car[] cars = getCars(readFile("./resources/carCatalog.txt")); - System.out.println(cars[0].getBrand()); - System.out.println(cars[0].getOwner()); - System.out.println(cars[0].getNumber()); + Scanner in = new Scanner(System.in); + System.out.print("Номер машины в списке: "); + int i = in.nextInt(); + + System.out.println(cars[i - 1].getBrand()); + System.out.println(cars[i - 1].getOwner()); + System.out.println(cars[i - 1].getNumber()); } public static String readFile(String nameFile) throws IOException { From 6ad93a359eaa1cd163678c6cfdc849eb8bdf585e Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 14 Jun 2025 13:04:06 +0300 Subject: [PATCH 071/131] lesson 32, task 2 --- .../walking/lesson32_files_1/task2/Main.java | 49 ++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/src/com/walking/lesson32_files_1/task2/Main.java b/src/com/walking/lesson32_files_1/task2/Main.java index 5d686ba17..deaaa719d 100644 --- a/src/com/walking/lesson32_files_1/task2/Main.java +++ b/src/com/walking/lesson32_files_1/task2/Main.java @@ -5,6 +5,8 @@ import java.io.FileReader; import java.io.IOException; import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Используя Задачу 1, реализуйте чтение из carCatalog.txt, @@ -12,7 +14,7 @@ */ public class Main { public static void main(String[] args) throws IOException { - Car[] cars = getCars(readFile("./resources/carCatalog.txt")); + Car[] cars = getCars(getCarInformation(readFile("./resources/carCatalog.txt"))); Scanner in = new Scanner(System.in); System.out.print("Номер машины в списке: "); int i = in.nextInt(); @@ -26,21 +28,46 @@ public static String readFile(String nameFile) throws IOException { StringBuilder cars = new StringBuilder(""); int i; try (FileReader reader = new FileReader(nameFile)) { - while ((i = reader.read()) != -1) { - cars.append((char) i); - } + while ((i = reader.read()) != -1) { + cars.append((char) i); } + } return cars.toString().trim(); } - public static Car[] getCars(String cars) { - String[] carInformation = cars.split("\n"); - Car[] carsArr = new Car[carInformation.length]; - for(int i = 0; i < carsArr.length; i++) { - String information = carInformation[i].replaceAll(",", ""); - String[] car = information.split(" "); - carsArr[i] = new Car(car[2], car[4] + " " + car[5], car[7]); + public static Car[] getCars(String[] cars) { + Pattern number = Pattern.compile("[а-я]{2}\\d{3}[а-я]"); + Pattern owner = Pattern.compile("[А-Я][а-я]+ [А-Я]\\.[А-Я]\\."); + Car[] carsArr = new Car[cars.length]; + for (int i = 0; i < carsArr.length; i++) { + Matcher matcher = number.matcher(cars[i]); + String num = ""; + while (matcher.find()) { + num = matcher.group(); + } + matcher = owner.matcher(cars[i]); + String own = ""; + while (matcher.find()) { + own = matcher.group(); + } + String brand = cars[i].replaceAll(num, "") + .replaceAll(own, "") + .trim(); + carsArr[i] = new Car(brand, own, num); } return carsArr; } + + private static String[] getCarInformation(String cars) { + String[] carInformation = cars.split("\n"); + for (int i = 0; i < carInformation.length; i++) { + String car = carInformation[i].replaceAll(",", "") + .replaceAll("Машина марки", "") + .replaceAll("владелец:", "") + .replaceAll("номер:", "") + .trim(); + carInformation[i] = car; + } + return carInformation; + } } From c947ca76b97825fb5711963a8bb8969874487500 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 14 Jun 2025 19:37:25 +0300 Subject: [PATCH 072/131] lesson 32, task 2 --- .../walking/lesson32_files_1/task2/Main.java | 32 ++++--------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/src/com/walking/lesson32_files_1/task2/Main.java b/src/com/walking/lesson32_files_1/task2/Main.java index deaaa719d..467635ccb 100644 --- a/src/com/walking/lesson32_files_1/task2/Main.java +++ b/src/com/walking/lesson32_files_1/task2/Main.java @@ -36,38 +36,18 @@ public static String readFile(String nameFile) throws IOException { } public static Car[] getCars(String[] cars) { - Pattern number = Pattern.compile("[а-я]{2}\\d{3}[а-я]"); - Pattern owner = Pattern.compile("[А-Я][а-я]+ [А-Я]\\.[А-Я]\\."); Car[] carsArr = new Car[cars.length]; for (int i = 0; i < carsArr.length; i++) { - Matcher matcher = number.matcher(cars[i]); - String num = ""; - while (matcher.find()) { - num = matcher.group(); - } - matcher = owner.matcher(cars[i]); - String own = ""; - while (matcher.find()) { - own = matcher.group(); - } - String brand = cars[i].replaceAll(num, "") - .replaceAll(own, "") - .trim(); - carsArr[i] = new Car(brand, own, num); + String[] info = cars[i].split(","); + carsArr[i] = new Car(info[0].trim(), info[1].trim(), info[2].trim()); } return carsArr; } private static String[] getCarInformation(String cars) { - String[] carInformation = cars.split("\n"); - for (int i = 0; i < carInformation.length; i++) { - String car = carInformation[i].replaceAll(",", "") - .replaceAll("Машина марки", "") - .replaceAll("владелец:", "") - .replaceAll("номер:", "") - .trim(); - carInformation[i] = car; - } - return carInformation; + return cars.replaceAll("Машина марки", "") + .replaceAll("владелец:", "") + .replaceAll("номер:", "") + .split("\n"); } } From 82fcc77faf8dff4a4061aa37af02a615d0e2e798 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 14 Jun 2025 19:37:30 +0300 Subject: [PATCH 073/131] lesson 32, task 2 --- src/com/walking/lesson32_files_1/task2/Main.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/com/walking/lesson32_files_1/task2/Main.java b/src/com/walking/lesson32_files_1/task2/Main.java index 467635ccb..3aa68f47c 100644 --- a/src/com/walking/lesson32_files_1/task2/Main.java +++ b/src/com/walking/lesson32_files_1/task2/Main.java @@ -5,8 +5,6 @@ import java.io.FileReader; import java.io.IOException; import java.util.Scanner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * Используя Задачу 1, реализуйте чтение из carCatalog.txt, From a8af1d34344254cbe40314d3952ee7fe4c3cbb39 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 16 Jun 2025 16:51:33 +0300 Subject: [PATCH 074/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson26_string_types/task2/Main.java | 4 +-- .../lesson28_generics1/task1/Main.java | 2 +- .../{service => model}/GenericNumber.java | 2 +- .../lesson28_generics1/task2/Main.java | 2 +- .../{service => model}/GenericObject.java | 2 +- .../lesson28_generics1/task3/Main.java | 2 +- .../{service => model}/GenericArray.java | 2 +- .../lesson29_generics2/task1/Main.java | 2 +- .../task1/{service => model}/Generic.java | 2 +- .../lesson29_generics2/task2/Main.java | 2 +- .../{service => model}/GenericNumber.java | 2 +- .../walking/lesson30_regex/task2/Main.java | 23 +++++++++------- .../task2/exeption/InvalidFullName.java | 7 ----- .../exeption/InvalidFullNameException.java | 7 +++++ .../walking/lesson30_regex/task3/Main.java | 27 +++++++++---------- src/com/walking/lesson31_io_streams/Main.java | 4 +-- .../walking/lesson32_files_1/task1/Main.java | 12 +++++---- .../walking/lesson32_files_1/task2/Main.java | 13 +++++---- 18 files changed, 63 insertions(+), 54 deletions(-) rename src/com/walking/lesson28_generics1/task1/{service => model}/GenericNumber.java (85%) rename src/com/walking/lesson28_generics1/task2/{service => model}/GenericObject.java (81%) rename src/com/walking/lesson28_generics1/task3/{service => model}/GenericArray.java (88%) rename src/com/walking/lesson29_generics2/task1/{service => model}/Generic.java (77%) rename src/com/walking/lesson29_generics2/task2/{service => model}/GenericNumber.java (85%) delete mode 100644 src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java create mode 100644 src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java index cd6b27e2e..78f5c291b 100644 --- a/src/com/walking/lesson26_string_types/task2/Main.java +++ b/src/com/walking/lesson26_string_types/task2/Main.java @@ -37,7 +37,7 @@ public static int countWords(String[] phrase) { int counter = 0; boolean isEqual; for (int i = 0; i < phrase.length; i++) { - isEqual = isEqual(phrase, i); + isEqual = isUnique(phrase, i); if (!isEqual) { counter--; @@ -49,7 +49,7 @@ public static int countWords(String[] phrase) { return counter; } - public static boolean isEqual(String[] phrase, int num) { + public static boolean isUnique(String[] phrase, int num) { for (int i = num + 1; i < phrase.length; i++) { if (phrase[num].equals(phrase[i])) { return false; diff --git a/src/com/walking/lesson28_generics1/task1/Main.java b/src/com/walking/lesson28_generics1/task1/Main.java index c16a63f4b..68a63c849 100644 --- a/src/com/walking/lesson28_generics1/task1/Main.java +++ b/src/com/walking/lesson28_generics1/task1/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson28_generics1.task1; -import com.walking.lesson28_generics1.task1.service.GenericNumber; +import com.walking.lesson28_generics1.task1.model.GenericNumber; /** * Создать обобщенный тип, принимающий в себя любого из наследников Number. diff --git a/src/com/walking/lesson28_generics1/task1/service/GenericNumber.java b/src/com/walking/lesson28_generics1/task1/model/GenericNumber.java similarity index 85% rename from src/com/walking/lesson28_generics1/task1/service/GenericNumber.java rename to src/com/walking/lesson28_generics1/task1/model/GenericNumber.java index 2c3cdcf3c..648a3a251 100644 --- a/src/com/walking/lesson28_generics1/task1/service/GenericNumber.java +++ b/src/com/walking/lesson28_generics1/task1/model/GenericNumber.java @@ -1,4 +1,4 @@ -package com.walking.lesson28_generics1.task1.service; +package com.walking.lesson28_generics1.task1.model; public class GenericNumber { private T num; diff --git a/src/com/walking/lesson28_generics1/task2/Main.java b/src/com/walking/lesson28_generics1/task2/Main.java index 975d16a73..fa461bca8 100644 --- a/src/com/walking/lesson28_generics1/task2/Main.java +++ b/src/com/walking/lesson28_generics1/task2/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson28_generics1.task2; -import com.walking.lesson28_generics1.task2.service.GenericObject; +import com.walking.lesson28_generics1.task2.model.GenericObject; /** * Создать класс-обертку над объектом любого типа. diff --git a/src/com/walking/lesson28_generics1/task2/service/GenericObject.java b/src/com/walking/lesson28_generics1/task2/model/GenericObject.java similarity index 81% rename from src/com/walking/lesson28_generics1/task2/service/GenericObject.java rename to src/com/walking/lesson28_generics1/task2/model/GenericObject.java index d878b56b3..d63266fa2 100644 --- a/src/com/walking/lesson28_generics1/task2/service/GenericObject.java +++ b/src/com/walking/lesson28_generics1/task2/model/GenericObject.java @@ -1,4 +1,4 @@ -package com.walking.lesson28_generics1.task2.service; +package com.walking.lesson28_generics1.task2.model; public class GenericObject { private final T obj; diff --git a/src/com/walking/lesson28_generics1/task3/Main.java b/src/com/walking/lesson28_generics1/task3/Main.java index 272435cde..6e1afbeac 100644 --- a/src/com/walking/lesson28_generics1/task3/Main.java +++ b/src/com/walking/lesson28_generics1/task3/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson28_generics1.task3; -import com.walking.lesson28_generics1.task3.service.GenericArray; +import com.walking.lesson28_generics1.task3.model.GenericArray; /** * Реализовать класс для работы с массивом. diff --git a/src/com/walking/lesson28_generics1/task3/service/GenericArray.java b/src/com/walking/lesson28_generics1/task3/model/GenericArray.java similarity index 88% rename from src/com/walking/lesson28_generics1/task3/service/GenericArray.java rename to src/com/walking/lesson28_generics1/task3/model/GenericArray.java index fb4792368..37ebc689c 100644 --- a/src/com/walking/lesson28_generics1/task3/service/GenericArray.java +++ b/src/com/walking/lesson28_generics1/task3/model/GenericArray.java @@ -1,4 +1,4 @@ -package com.walking.lesson28_generics1.task3.service; +package com.walking.lesson28_generics1.task3.model; public class GenericArray { private final T[] arr; diff --git a/src/com/walking/lesson29_generics2/task1/Main.java b/src/com/walking/lesson29_generics2/task1/Main.java index e97c71502..f07af6fd0 100644 --- a/src/com/walking/lesson29_generics2/task1/Main.java +++ b/src/com/walking/lesson29_generics2/task1/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson29_generics2.task1; -import com.walking.lesson29_generics2.task1.service.Generic; +import com.walking.lesson29_generics2.task1.model.Generic; /** * Реализуйте обобщенный тип, хранящий параметризованное поле. diff --git a/src/com/walking/lesson29_generics2/task1/service/Generic.java b/src/com/walking/lesson29_generics2/task1/model/Generic.java similarity index 77% rename from src/com/walking/lesson29_generics2/task1/service/Generic.java rename to src/com/walking/lesson29_generics2/task1/model/Generic.java index 019766e24..083736af3 100644 --- a/src/com/walking/lesson29_generics2/task1/service/Generic.java +++ b/src/com/walking/lesson29_generics2/task1/model/Generic.java @@ -1,4 +1,4 @@ -package com.walking.lesson29_generics2.task1.service; +package com.walking.lesson29_generics2.task1.model; public class Generic { private final T object; diff --git a/src/com/walking/lesson29_generics2/task2/Main.java b/src/com/walking/lesson29_generics2/task2/Main.java index 47e9430e5..0e518129e 100644 --- a/src/com/walking/lesson29_generics2/task2/Main.java +++ b/src/com/walking/lesson29_generics2/task2/Main.java @@ -1,7 +1,7 @@ package com.walking.lesson29_generics2.task2; -import com.walking.lesson29_generics2.task2.service.GenericNumber; +import com.walking.lesson29_generics2.task2.model.GenericNumber; /** * Используя Задачу 1 из урока Generics. diff --git a/src/com/walking/lesson29_generics2/task2/service/GenericNumber.java b/src/com/walking/lesson29_generics2/task2/model/GenericNumber.java similarity index 85% rename from src/com/walking/lesson29_generics2/task2/service/GenericNumber.java rename to src/com/walking/lesson29_generics2/task2/model/GenericNumber.java index d65e56667..31f3abf2f 100644 --- a/src/com/walking/lesson29_generics2/task2/service/GenericNumber.java +++ b/src/com/walking/lesson29_generics2/task2/model/GenericNumber.java @@ -1,4 +1,4 @@ -package com.walking.lesson29_generics2.task2.service; +package com.walking.lesson29_generics2.task2.model; public class GenericNumber { private final T num; diff --git a/src/com/walking/lesson30_regex/task2/Main.java b/src/com/walking/lesson30_regex/task2/Main.java index b9a8d626c..cf78ff911 100644 --- a/src/com/walking/lesson30_regex/task2/Main.java +++ b/src/com/walking/lesson30_regex/task2/Main.java @@ -1,6 +1,6 @@ package com.walking.lesson30_regex.task2; -import com.walking.lesson30_regex.task2.exeption.InvalidFullName; +import com.walking.lesson30_regex.task2.exeption.InvalidFullNameException; import com.walking.lesson30_regex.task2.service.FullName; import java.util.Scanner; @@ -26,17 +26,22 @@ public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Введите имя: "); String fullName = in.nextLine(); - isFullNameValid(fullName).printFullName(); + getFullName(fullName).printFullName(); } - public static FullName isFullNameValid(String fullName) { - if (fullName.matches(FULL_NAME_REGEX)) { - String[] fullNameArr = fullName.split(" "); - if (isSurnameValid(fullNameArr[0]) && isNameValid(fullNameArr[1]) && isNameValid(fullNameArr[2])) { - return new FullName(fullNameArr[0], fullNameArr[1], fullNameArr[2]); - } + public static FullName getFullName(String fullName) { + if (!isFullNameValid(fullName)) { + throw new InvalidFullNameException(); } - throw new InvalidFullName("Имя указано некорректно."); + String[] fullNameArr = fullName.split(" "); + if (isSurnameValid(fullNameArr[0]) && isNameValid(fullNameArr[1]) && isNameValid(fullNameArr[2])) { + return new FullName(fullNameArr[0], fullNameArr[1], fullNameArr[2]); + } + throw new InvalidFullNameException(); + } + + public static boolean isFullNameValid(String fullName) { + return fullName.matches(FULL_NAME_REGEX); } public static boolean isSurnameValid(String surname) { diff --git a/src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java deleted file mode 100644 index cf36b9524..000000000 --- a/src/com/walking/lesson30_regex/task2/exeption/InvalidFullName.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson30_regex.task2.exeption; - -public class InvalidFullName extends RuntimeException { - public InvalidFullName(String message) { - super(message); - } -} diff --git a/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java new file mode 100644 index 000000000..cbf9fb789 --- /dev/null +++ b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java @@ -0,0 +1,7 @@ +package com.walking.lesson30_regex.task2.exeption; + +public class InvalidFullNameException extends RuntimeException { + public InvalidFullNameException() { + super("Имя указано некорректно."); + } +} diff --git a/src/com/walking/lesson30_regex/task3/Main.java b/src/com/walking/lesson30_regex/task3/Main.java index ce1c5b30c..482c76032 100644 --- a/src/com/walking/lesson30_regex/task3/Main.java +++ b/src/com/walking/lesson30_regex/task3/Main.java @@ -3,6 +3,8 @@ import com.walking.lesson30_regex.task3.exception.InvalidWordException; import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Реализуйте задачу @@ -26,14 +28,14 @@ public static void main(String[] args) { .trim() .toLowerCase(); - System.out.printf("Найдено уникальных слов: %d", countWords(validatePhrase(phrase))); + System.out.printf("Найдено уникальных слов: %d", countWords(splitPhrase(phrase))); } public static int countWords(String[] phrase) { int counter = 0; boolean isEqual; for (int i = 0; i < phrase.length; i++) { - isEqual = isEqual(phrase, i); + isEqual = isUnique(phrase, i); if (!isEqual) { counter--; @@ -45,7 +47,7 @@ public static int countWords(String[] phrase) { return counter; } - public static String[] validatePhrase(String phrase) { + public static String[] splitPhrase(String phrase) { String[] words = phrase.split("\\s+"); for (String word : words) { if (!validateWord(word)) { @@ -58,21 +60,18 @@ public static String[] validatePhrase(String phrase) { public static boolean validateWord(String word) { if (!word.contains("-")) { return word.matches(WORD); - } else { - if (!word.matches(WORD_WITH_HYPHENS)) { - throw new InvalidWordException("Некорректное слово: " + word); - } + } - for (String wordPart : word.split("-")) { - if (!wordPart.matches(WORD)) { - throw new InvalidWordException("Некорректное слово: " + wordPart); - } - } + Pattern multiplyHyphens = Pattern.compile("--+"); + Matcher matcher = multiplyHyphens.matcher(word); + if (matcher.find()) { + return false; } - return true; + + return word.matches(WORD_WITH_HYPHENS); } - public static boolean isEqual(String[] phrase, int num) { + public static boolean isUnique(String[] phrase, int num) { for (int i = num + 1; i < phrase.length; i++) { if (phrase[num].equals(phrase[i])) { return false; diff --git a/src/com/walking/lesson31_io_streams/Main.java b/src/com/walking/lesson31_io_streams/Main.java index fc2daf0d6..0602cf386 100644 --- a/src/com/walking/lesson31_io_streams/Main.java +++ b/src/com/walking/lesson31_io_streams/Main.java @@ -32,7 +32,7 @@ public static char readChar() throws IOException { if (string.length() == 1 || string.length() == 2 && string.charAt(1) == '\n') { return string.charAt(0); } - throw new WrongTypeExeption("%s не может быть представлено в виде символа".formatted(string)); + throw new WrongTypeExeption("\"%s\" не может быть представлено в виде символа".formatted(string)); } public static boolean readBoolean() throws IOException { @@ -45,7 +45,7 @@ public static boolean readBoolean() throws IOException { if ("true".equalsIgnoreCase(string)) { return true; } - throw new WrongTypeExeption("%s не похоже на boolean".formatted(string)); + throw new WrongTypeExeption("\"%s\" не похоже на boolean".formatted(string)); } public static String readString() throws IOException { diff --git a/src/com/walking/lesson32_files_1/task1/Main.java b/src/com/walking/lesson32_files_1/task1/Main.java index 8a9cb25e3..5dd242f98 100644 --- a/src/com/walking/lesson32_files_1/task1/Main.java +++ b/src/com/walking/lesson32_files_1/task1/Main.java @@ -11,6 +11,8 @@ * Реализуйте сохранение массива машин в файл carCatalog.txt */ public class Main { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static void main(String[] args) throws IOException { Car[] cars = new Car[6]; cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); @@ -24,16 +26,16 @@ public static void main(String[] args) throws IOException { } public static void saveCars(Car[] cars) throws IOException { - try (FileOutputStream fos = new FileOutputStream("./resources/carCatalog.txt")) { + try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION)) { for (Car car : cars) { - String information = car.toString() + "\n"; - byte[] buffer = information.getBytes(); - fos.write(buffer, 0, buffer.length); + String carInfo = car.toString() + "\n"; + byte[] bytes = carInfo.getBytes(); + fos.write(bytes, 0, bytes.length); } System.out.println("Файл записан."); } catch (IOException ex) { - System.out.println("Какая-то ошибка."); + throw new RuntimeException("Не удалось записать файл", ex); } } } diff --git a/src/com/walking/lesson32_files_1/task2/Main.java b/src/com/walking/lesson32_files_1/task2/Main.java index 3aa68f47c..f1030ccc7 100644 --- a/src/com/walking/lesson32_files_1/task2/Main.java +++ b/src/com/walking/lesson32_files_1/task2/Main.java @@ -11,8 +11,11 @@ * реализовав сохранение данных в массив Car. */ public class Main { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static void main(String[] args) throws IOException { - Car[] cars = getCars(getCarInformation(readFile("./resources/carCatalog.txt"))); + String text = readFile(); + Car[] cars = getCars(getCarInformation(text)); Scanner in = new Scanner(System.in); System.out.print("Номер машины в списке: "); int i = in.nextInt(); @@ -22,10 +25,10 @@ public static void main(String[] args) throws IOException { System.out.println(cars[i - 1].getNumber()); } - public static String readFile(String nameFile) throws IOException { - StringBuilder cars = new StringBuilder(""); - int i; - try (FileReader reader = new FileReader(nameFile)) { + public static String readFile() throws IOException { + StringBuilder cars = new StringBuilder(); + try (FileReader reader = new FileReader(FILE_LOCATION)) { + int i; while ((i = reader.read()) != -1) { cars.append((char) i); } From f46b897904226ea20c81db09bbadd29aecc8e1b2 Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 27 Jun 2025 12:22:50 +0300 Subject: [PATCH 075/131] lesson 32, task 3 --- .../walking/lesson32_files_1/task3/Main.java | 27 ++++++- .../task3/repository/CarRepository.java | 51 +++++++++++++ .../task3/service/CarService.java | 76 +++++++++++++++++++ 3 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson32_files_1/task3/repository/CarRepository.java create mode 100644 src/com/walking/lesson32_files_1/task3/service/CarService.java diff --git a/src/com/walking/lesson32_files_1/task3/Main.java b/src/com/walking/lesson32_files_1/task3/Main.java index 7032b7a4e..950bed77d 100644 --- a/src/com/walking/lesson32_files_1/task3/Main.java +++ b/src/com/walking/lesson32_files_1/task3/Main.java @@ -1,5 +1,13 @@ package com.walking.lesson32_files_1.task3; +import com.walking.lesson21_immutable_object.car.Car; +import com.walking.lesson32_files_1.task3.service.CarService; + +import java.io.IOException; + +import static com.walking.lesson32_files_1.task3.repository.CarRepository.*; +import static com.walking.lesson32_files_1.task3.service.CarService.*; + /** * Реализуйте возможность добавления, удаления и изменения информации о машинах, * используя Задачи 1 и 2. @@ -7,6 +15,23 @@ * но вы можете сделать иную реализацию на свое усмотрение. */ public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + saveCars(setCars()); + String[] cars = getCarInformation(readFile()); + CarService carService = new CarService(getAll(cars)); + carService.addCar(new Car("Волга", "Петрова О.Е.", "ер765к")); + saveCars(carService.getCars()); + } + + private static Car[] setCars() { + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + + return cars; } } diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java new file mode 100644 index 000000000..dd086b447 --- /dev/null +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -0,0 +1,51 @@ +package com.walking.lesson32_files_1.task3.repository; +import com.walking.lesson21_immutable_object.car.Car; + +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.IOException; + +public class CarRepository { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + + public static void saveCars(Car[] cars) throws IOException { + try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION)) { + for (Car car : cars) { + String carInfo = car.toString() + "\n"; + byte[] bytes = carInfo.getBytes(); + fos.write(bytes, 0, bytes.length); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + throw new RuntimeException("Не удалось записать файл", ex); + } + } + + public static Car[] getAll(String[] cars) { + Car[] carsArr = new Car[cars.length]; + for (int i = 0; i < carsArr.length; i++) { + String[] info = cars[i].split(","); + carsArr[i] = new Car(info[0].trim(), info[1].trim(), info[2].trim()); + } + return carsArr; + } + + public static String readFile() throws IOException { + StringBuilder cars = new StringBuilder(); + try (FileReader reader = new FileReader(FILE_LOCATION)) { + int i; + while ((i = reader.read()) != -1) { + cars.append((char) i); + } + } + return cars.toString().trim(); + } + + public static String[] getCarInformation(String cars) { + return cars.replaceAll("Машина марки", "") + .replaceAll("владелец:", "") + .replaceAll("номер:", "") + .split("\n"); + } +} diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java new file mode 100644 index 000000000..6a12f0218 --- /dev/null +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -0,0 +1,76 @@ +package com.walking.lesson32_files_1.task3.service; +import com.walking.lesson21_immutable_object.car.Car; + +import java.util.Arrays; + +public class CarService { + private Car[] cars; + + public CarService(Car[] cars) { + this.cars = cars; + } + + public void addCar(Car car) { + if (find(car) != null) { + System.out.println("Такая машина уже существует."); + return; + } + cars = Arrays.copyOf(cars, cars.length + 1); + cars[cars.length - 1] = car; + } + + public Car update(Car car) { + Car existedCar = find(car); + + if (existedCar == null) { + System.out.println("Машина не найдена."); + return null; + } + + existedCar.setOwner(car.getOwner()); + return existedCar; + } + + public void delete(Car car) { + int index = getIndex(car); + if (index == -1) { + System.out.println("Машина не найдена."); + return; + } + + Car[] updatedCars = new Car[cars.length - 1]; + for (int i = 0; i < cars.length; i++) { + if (i < index) { + updatedCars[i] = cars[i]; + } + + if (i > index) { + updatedCars[i - 1] = cars[i]; + } + } + + cars = updatedCars; + } + + private Car find(Car car) { + for (Car c : cars) { + if (c.hashCode() == car.hashCode() && c.equals(car)) { + return c; + } + } + return null; + } + + private int getIndex(Car car) { + for (int i = 0; i < cars.length; i++) { + if (cars[i].equals(car) && cars[i].hashCode() == car.hashCode()) { + return i; + } + } + return -1; + } + + public Car[] getCars() { + return cars; + } +} From 901504e8b227f956ffae24fb3d462bc89b57c47e Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 30 Jun 2025 18:57:58 +0300 Subject: [PATCH 076/131] lesson 32, task 3 --- src/com/walking/lesson32_files_1/task3/Main.java | 3 +++ .../lesson32_files_1/task3/service/CarService.java | 9 ++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/walking/lesson32_files_1/task3/Main.java b/src/com/walking/lesson32_files_1/task3/Main.java index 950bed77d..860eea228 100644 --- a/src/com/walking/lesson32_files_1/task3/Main.java +++ b/src/com/walking/lesson32_files_1/task3/Main.java @@ -20,7 +20,10 @@ public static void main(String[] args) throws IOException { String[] cars = getCarInformation(readFile()); CarService carService = new CarService(getAll(cars)); carService.addCar(new Car("Волга", "Петрова О.Е.", "ер765к")); + carService.delete(new Car ("Audi", "Печкин Ф.Б.", "уе777к")); + carService.update(new Car("BMW", "Михайлова Р.Г.", "ос025р")); saveCars(carService.getCars()); + } private static Car[] setCars() { diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java index 6a12f0218..4b5324a08 100644 --- a/src/com/walking/lesson32_files_1/task3/service/CarService.java +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -19,16 +19,15 @@ public void addCar(Car car) { cars[cars.length - 1] = car; } - public Car update(Car car) { + public void update(Car car) { Car existedCar = find(car); if (existedCar == null) { System.out.println("Машина не найдена."); - return null; + return; } existedCar.setOwner(car.getOwner()); - return existedCar; } public void delete(Car car) { @@ -54,7 +53,7 @@ public void delete(Car car) { private Car find(Car car) { for (Car c : cars) { - if (c.hashCode() == car.hashCode() && c.equals(car)) { + if (c.equals(car)) { return c; } } @@ -63,7 +62,7 @@ private Car find(Car car) { private int getIndex(Car car) { for (int i = 0; i < cars.length; i++) { - if (cars[i].equals(car) && cars[i].hashCode() == car.hashCode()) { + if (cars[i].equals(car)) { return i; } } From 3f15ffd686a9e4c83828404546f29ac26180ebf5 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Jul 2025 19:29:41 +0300 Subject: [PATCH 077/131] lesson 33, task 1 --- .../walking/lesson33_files_2/task1/Main.java | 61 ++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/src/com/walking/lesson33_files_2/task1/Main.java b/src/com/walking/lesson33_files_2/task1/Main.java index 86f08e722..5b45d594b 100644 --- a/src/com/walking/lesson33_files_2/task1/Main.java +++ b/src/com/walking/lesson33_files_2/task1/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson33_files_2.task1; +import com.walking.lesson19_object_methods.car.Car; + +import java.io.*; + /** * Реализуйте Задачу 1 из урока * ... @@ -10,6 +14,61 @@ * Вариант 3: BufferedWriter. */ public class Main { - public static void main(String[] args) { + public static final String FILE_LOCATION = "./resources/carCatalog3.txt"; + + public static void main(String[] args) throws IOException { + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + + saveCars3(cars); + } + + public static void saveCars1(Car[] cars) throws IOException { + try (FileWriter writer = new FileWriter(FILE_LOCATION)) { + for (Car car : cars) { + String carInfo = car.toString(); + writer.write(carInfo); + writer.append('\n'); + writer.flush(); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + throw new RuntimeException("Не удалось записать файл", ex); + } + } + + public static void saveCars2(Car[] cars) throws IOException { + try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION); + BufferedOutputStream bos = new BufferedOutputStream(fos)) { + for (Car car : cars) { + String carInfo = car.toString() + "\n"; + byte[] buffer = carInfo.getBytes(); + bos.write(buffer, 0, buffer.length); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + throw new RuntimeException("Не удалось записать файл", ex); + } + } + + public static void saveCars3(Car[] cars) throws IOException { + try (FileWriter writer = new FileWriter(FILE_LOCATION); + BufferedWriter bw = new BufferedWriter(writer)) { + for (Car car : cars) { + String carInfo = car.toString(); + bw.write(carInfo + "\n"); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + throw new RuntimeException("Не удалось записать файл", ex); + } } } From e5662510f029de16410ce9f8967092dbe6f069ea Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Jul 2025 19:47:54 +0300 Subject: [PATCH 078/131] lesson 33, task 1 --- .../task1/{ => var1}/Main.java | 37 ++---------- .../lesson33_files_2/task1/var2/Main.java | 38 ++++++++++++ .../lesson33_files_2/task1/var3/Main.java | 37 ++++++++++++ .../walking/lesson33_files_2/task2/Main.java | 60 ++++++++++++++++++- 4 files changed, 138 insertions(+), 34 deletions(-) rename src/com/walking/lesson33_files_2/task1/{ => var1}/Main.java (52%) create mode 100644 src/com/walking/lesson33_files_2/task1/var2/Main.java create mode 100644 src/com/walking/lesson33_files_2/task1/var3/Main.java diff --git a/src/com/walking/lesson33_files_2/task1/Main.java b/src/com/walking/lesson33_files_2/task1/var1/Main.java similarity index 52% rename from src/com/walking/lesson33_files_2/task1/Main.java rename to src/com/walking/lesson33_files_2/task1/var1/Main.java index 5b45d594b..4844d2be9 100644 --- a/src/com/walking/lesson33_files_2/task1/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var1/Main.java @@ -1,4 +1,4 @@ -package com.walking.lesson33_files_2.task1; +package com.walking.lesson33_files_2.task1.var1; import com.walking.lesson19_object_methods.car.Car; @@ -14,7 +14,7 @@ * Вариант 3: BufferedWriter. */ public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog3.txt"; + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; public static void main(String[] args) throws IOException { Car[] cars = new Car[6]; @@ -25,10 +25,10 @@ public static void main(String[] args) throws IOException { cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); - saveCars3(cars); + saveCars(cars); } - public static void saveCars1(Car[] cars) throws IOException { + public static void saveCars(Car[] cars) throws IOException { try (FileWriter writer = new FileWriter(FILE_LOCATION)) { for (Car car : cars) { String carInfo = car.toString(); @@ -42,33 +42,4 @@ public static void saveCars1(Car[] cars) throws IOException { throw new RuntimeException("Не удалось записать файл", ex); } } - - public static void saveCars2(Car[] cars) throws IOException { - try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION); - BufferedOutputStream bos = new BufferedOutputStream(fos)) { - for (Car car : cars) { - String carInfo = car.toString() + "\n"; - byte[] buffer = carInfo.getBytes(); - bos.write(buffer, 0, buffer.length); - } - System.out.println("Файл записан."); - - } catch (IOException ex) { - throw new RuntimeException("Не удалось записать файл", ex); - } - } - - public static void saveCars3(Car[] cars) throws IOException { - try (FileWriter writer = new FileWriter(FILE_LOCATION); - BufferedWriter bw = new BufferedWriter(writer)) { - for (Car car : cars) { - String carInfo = car.toString(); - bw.write(carInfo + "\n"); - } - System.out.println("Файл записан."); - - } catch (IOException ex) { - throw new RuntimeException("Не удалось записать файл", ex); - } - } } diff --git a/src/com/walking/lesson33_files_2/task1/var2/Main.java b/src/com/walking/lesson33_files_2/task1/var2/Main.java new file mode 100644 index 000000000..6183c3347 --- /dev/null +++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java @@ -0,0 +1,38 @@ +package com.walking.lesson33_files_2.task1.var2; + +import com.walking.lesson19_object_methods.car.Car; + +import java.io.BufferedOutputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +public class Main { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + + public static void main(String[] args) throws IOException { + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + + saveCars(cars); + } + + public static void saveCars(Car[] cars) throws IOException { + try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION); + BufferedOutputStream bos = new BufferedOutputStream(fos)) { + for (Car car : cars) { + String carInfo = car.toString() + "\n"; + byte[] buffer = carInfo.getBytes(); + bos.write(buffer, 0, buffer.length); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + throw new RuntimeException("Не удалось записать файл", ex); + } + } +} diff --git a/src/com/walking/lesson33_files_2/task1/var3/Main.java b/src/com/walking/lesson33_files_2/task1/var3/Main.java new file mode 100644 index 000000000..4cb4a3a40 --- /dev/null +++ b/src/com/walking/lesson33_files_2/task1/var3/Main.java @@ -0,0 +1,37 @@ +package com.walking.lesson33_files_2.task1.var3; + +import com.walking.lesson19_object_methods.car.Car; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; + +public class Main { + public static final String FILE_LOCATION = "./resources/carCatalog3.txt"; + + public static void main(String[] args) throws IOException { + Car[] cars = new Car[6]; + cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); + cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); + cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); + cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); + cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); + cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + + saveCars(cars); + } + + public static void saveCars(Car[] cars) throws IOException { + try (FileWriter writer = new FileWriter(FILE_LOCATION); + BufferedWriter bw = new BufferedWriter(writer)) { + for (Car car : cars) { + String carInfo = car.toString(); + bw.write(carInfo + "\n"); + } + System.out.println("Файл записан."); + + } catch (IOException ex) { + throw new RuntimeException("Не удалось записать файл", ex); + } + } +} diff --git a/src/com/walking/lesson33_files_2/task2/Main.java b/src/com/walking/lesson33_files_2/task2/Main.java index cae9b2874..fa39d2149 100644 --- a/src/com/walking/lesson33_files_2/task2/Main.java +++ b/src/com/walking/lesson33_files_2/task2/Main.java @@ -1,5 +1,13 @@ package com.walking.lesson33_files_2.task2; +import com.walking.lesson19_object_methods.car.Car; + +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.IOException; +import java.util.Scanner; + /** * Реализуйте Задачу 2 из урока * ... @@ -10,6 +18,56 @@ * Вариант 3: BufferedReader. */ public class Main { - public static void main(String[] args) { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + + public static void main(String[] args) throws IOException { + String text = readFile2(); + Car[] cars = getCars(getCarInformation(text)); + Scanner in = new Scanner(System.in); + System.out.print("Номер машины в списке: "); + int i = in.nextInt(); + + System.out.println(cars[i - 1].getBrand()); + System.out.println(cars[i - 1].getOwner()); + System.out.println(cars[i - 1].getNumber()); + } + + public static String readFile1() throws IOException { + StringBuilder cars = new StringBuilder(); + try (FileReader reader = new FileReader(FILE_LOCATION)) { + int i; + while ((i = reader.read()) != -1) { + cars.append((char) i); + } + } + return cars.toString().trim(); + } + + public static String readFile2() throws IOException { + StringBuilder cars = new StringBuilder(); + try (FileInputStream fis = new FileInputStream(FILE_LOCATION); + BufferedInputStream bis = new BufferedInputStream(fis)) { + int i; + while ((i = bis.read()) != -1) { + cars.append((char) i); + } + } + return cars.toString().trim(); + } + + public static Car[] getCars(String[] cars) { + Car[] carsArr = new Car[cars.length]; + for (int i = 0; i < carsArr.length; i++) { + String[] info = cars[i].split(","); + carsArr[i] = new Car(info[0].trim(), info[1].trim(), info[2].trim()); + } + return carsArr; + } + + private static String[] getCarInformation(String cars) { + return cars.replaceAll("Машина марки", "") + .replaceAll("владелец:", "") + .replaceAll("номер:", "") + .split("\n"); } } From 1d546f22b5b7c3f7f63e576924ae083fc25179f9 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Jul 2025 19:53:49 +0300 Subject: [PATCH 079/131] lesson 33, task 2 --- .../task2/{ => var1}/Main.java | 18 ++----- .../lesson33_files_2/task2/var2/Main.java | 52 +++++++++++++++++++ .../lesson33_files_2/task2/var3/Main.java | 51 ++++++++++++++++++ 3 files changed, 106 insertions(+), 15 deletions(-) rename src/com/walking/lesson33_files_2/task2/{ => var1}/Main.java (77%) create mode 100644 src/com/walking/lesson33_files_2/task2/var2/Main.java create mode 100644 src/com/walking/lesson33_files_2/task2/var3/Main.java diff --git a/src/com/walking/lesson33_files_2/task2/Main.java b/src/com/walking/lesson33_files_2/task2/var1/Main.java similarity index 77% rename from src/com/walking/lesson33_files_2/task2/Main.java rename to src/com/walking/lesson33_files_2/task2/var1/Main.java index fa39d2149..b2487ce51 100644 --- a/src/com/walking/lesson33_files_2/task2/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var1/Main.java @@ -1,4 +1,4 @@ -package com.walking.lesson33_files_2.task2; +package com.walking.lesson33_files_2.task2.var1; import com.walking.lesson19_object_methods.car.Car; @@ -21,7 +21,7 @@ public class Main { public static final String FILE_LOCATION = "./resources/carCatalog.txt"; public static void main(String[] args) throws IOException { - String text = readFile2(); + String text = readFile(); Car[] cars = getCars(getCarInformation(text)); Scanner in = new Scanner(System.in); System.out.print("Номер машины в списке: "); @@ -32,7 +32,7 @@ public static void main(String[] args) throws IOException { System.out.println(cars[i - 1].getNumber()); } - public static String readFile1() throws IOException { + public static String readFile() throws IOException { StringBuilder cars = new StringBuilder(); try (FileReader reader = new FileReader(FILE_LOCATION)) { int i; @@ -43,18 +43,6 @@ public static String readFile1() throws IOException { return cars.toString().trim(); } - public static String readFile2() throws IOException { - StringBuilder cars = new StringBuilder(); - try (FileInputStream fis = new FileInputStream(FILE_LOCATION); - BufferedInputStream bis = new BufferedInputStream(fis)) { - int i; - while ((i = bis.read()) != -1) { - cars.append((char) i); - } - } - return cars.toString().trim(); - } - public static Car[] getCars(String[] cars) { Car[] carsArr = new Car[cars.length]; for (int i = 0; i < carsArr.length; i++) { diff --git a/src/com/walking/lesson33_files_2/task2/var2/Main.java b/src/com/walking/lesson33_files_2/task2/var2/Main.java new file mode 100644 index 000000000..6ea664a59 --- /dev/null +++ b/src/com/walking/lesson33_files_2/task2/var2/Main.java @@ -0,0 +1,52 @@ +package com.walking.lesson33_files_2.task2.var2; + +import com.walking.lesson19_object_methods.car.Car; + +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Scanner; + +public class Main { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + + public static void main(String[] args) throws IOException { + String text = readFile(); + Car[] cars = getCars(getCarInformation(text)); + Scanner in = new Scanner(System.in); + System.out.print("Номер машины в списке: "); + int i = in.nextInt(); + + System.out.println(cars[i - 1].getBrand()); + System.out.println(cars[i - 1].getOwner()); + System.out.println(cars[i - 1].getNumber()); + } + + public static String readFile() throws IOException { + StringBuilder cars = new StringBuilder(); + try (FileInputStream fis = new FileInputStream(FILE_LOCATION); + BufferedInputStream bis = new BufferedInputStream(fis)) { + int i; + while ((i = bis.read()) != -1) { + cars.append((char) i); + } + } + return cars.toString().trim(); + } + + public static Car[] getCars(String[] cars) { + Car[] carsArr = new Car[cars.length]; + for (int i = 0; i < carsArr.length; i++) { + String[] info = cars[i].split(","); + carsArr[i] = new Car(info[0].trim(), info[1].trim(), info[2].trim()); + } + return carsArr; + } + + private static String[] getCarInformation(String cars) { + return cars.replaceAll("Машина марки", "") + .replaceAll("владелец:", "") + .replaceAll("номер:", "") + .split("\n"); + } +} diff --git a/src/com/walking/lesson33_files_2/task2/var3/Main.java b/src/com/walking/lesson33_files_2/task2/var3/Main.java new file mode 100644 index 000000000..eaf82541b --- /dev/null +++ b/src/com/walking/lesson33_files_2/task2/var3/Main.java @@ -0,0 +1,51 @@ +package com.walking.lesson33_files_2.task2.var3; + +import com.walking.lesson19_object_methods.car.Car; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.Scanner; + +public class Main { + public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + + public static void main(String[] args) throws IOException { + String text = readFile(); + Car[] cars = getCars(getCarInformation(text)); + Scanner in = new Scanner(System.in); + System.out.print("Номер машины в списке: "); + int i = in.nextInt(); + + System.out.println(cars[i - 1].getBrand()); + System.out.println(cars[i - 1].getOwner()); + System.out.println(cars[i - 1].getNumber()); + } + + public static String readFile() throws IOException { + StringBuilder cars = new StringBuilder(); + try (BufferedReader br = new BufferedReader(new FileReader(FILE_LOCATION))) { + int i; + while ((i = br.read()) != -1) { + cars.append((char) i); + } + } + return cars.toString().trim(); + } + + public static Car[] getCars(String[] cars) { + Car[] carsArr = new Car[cars.length]; + for (int i = 0; i < carsArr.length; i++) { + String[] info = cars[i].split(","); + carsArr[i] = new Car(info[0].trim(), info[1].trim(), info[2].trim()); + } + return carsArr; + } + + private static String[] getCarInformation(String cars) { + return cars.replaceAll("Машина марки", "") + .replaceAll("владелец:", "") + .replaceAll("номер:", "") + .split("\n"); + } +} From 08f6031889619354d477ae02296e26b1145804b8 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Jul 2025 20:03:46 +0300 Subject: [PATCH 080/131] lesson 33, task 2 --- .../lesson33_files_2/task1/var2/Main.java | 17 ++++++++--------- .../lesson33_files_2/task2/var2/Main.java | 7 ++----- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/com/walking/lesson33_files_2/task1/var2/Main.java b/src/com/walking/lesson33_files_2/task1/var2/Main.java index 6183c3347..00715cae3 100644 --- a/src/com/walking/lesson33_files_2/task1/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java @@ -7,16 +7,15 @@ import java.io.IOException; public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static final String FILE_LOCATION = "./resources/carCatalog1.txt"; public static void main(String[] args) throws IOException { - Car[] cars = new Car[6]; - cars[0] = new Car("Audi", "Печкин Ф.Б.", "уе777к"); - cars[1] = new Car("BMW", "Борисов Ю.А.", "ос025р"); - cars[2] = new Car("Ford", "Снегирь Ю.В.", "мр666м"); - cars[3] = new Car("Bentley", "Белова Д.М.", "ра345з"); - cars[4] = new Car("Ferrari", "Сергеев К.Л.", "уе999з"); - cars[5] = new Car("Москвич", "Попов А.Д.", "ар832с"); + Car[] cars = new Car[5]; + cars[0] = new Car("Audi", "Styles H.", "rt777e"); + cars[1] = new Car("BMW", "Steeve J.", "er025w"); + cars[2] = new Car("Ford", "Potter H.", "we666a"); + cars[3] = new Car("Bentley", "Malfoy D.", "po345r"); + cars[4] = new Car("Ferrari", "Hadid G..", "re999t"); saveCars(cars); } @@ -25,7 +24,7 @@ public static void saveCars(Car[] cars) throws IOException { try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION); BufferedOutputStream bos = new BufferedOutputStream(fos)) { for (Car car : cars) { - String carInfo = car.toString() + "\n"; + String carInfo = car.getBrand() + ", " + car.getOwner() + ", " + car.getNumber() + "\n"; byte[] buffer = carInfo.getBytes(); bos.write(buffer, 0, buffer.length); } diff --git a/src/com/walking/lesson33_files_2/task2/var2/Main.java b/src/com/walking/lesson33_files_2/task2/var2/Main.java index 6ea664a59..b72636550 100644 --- a/src/com/walking/lesson33_files_2/task2/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var2/Main.java @@ -8,7 +8,7 @@ import java.util.Scanner; public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static final String FILE_LOCATION = "./resources/carCatalog1.txt"; public static void main(String[] args) throws IOException { String text = readFile(); @@ -44,9 +44,6 @@ public static Car[] getCars(String[] cars) { } private static String[] getCarInformation(String cars) { - return cars.replaceAll("Машина марки", "") - .replaceAll("владелец:", "") - .replaceAll("номер:", "") - .split("\n"); + return cars.split("\n"); } } From 2b4e2202e7810552c74260c507fa3e81e03b27e5 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 3 Jul 2025 20:07:29 +0300 Subject: [PATCH 081/131] lesson 33, task 2 --- src/com/walking/lesson33_files_2/task1/var2/Main.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/com/walking/lesson33_files_2/task1/var2/Main.java b/src/com/walking/lesson33_files_2/task1/var2/Main.java index 00715cae3..cac299641 100644 --- a/src/com/walking/lesson33_files_2/task1/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java @@ -6,6 +6,11 @@ import java.io.FileOutputStream; import java.io.IOException; +/** + * для второго варианта в таск2 и здесь сделала отдельный файл на англе, + * не уверена, можно ли через FileInputStream кириллицу читать + * (у меня не выходит) + */ public class Main { public static final String FILE_LOCATION = "./resources/carCatalog1.txt"; From 103ce780382b093b1947e60ed6ac461a8c3ecebe Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 9 Jul 2025 12:22:18 +0300 Subject: [PATCH 082/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson30_regex/task2/Main.java | 23 +++++++++++++++---- .../exeption/InvalidFullNameException.java | 4 ++-- .../walking/lesson30_regex/task3/Main.java | 14 +++++++---- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/com/walking/lesson30_regex/task2/Main.java b/src/com/walking/lesson30_regex/task2/Main.java index cf78ff911..a8a79c332 100644 --- a/src/com/walking/lesson30_regex/task2/Main.java +++ b/src/com/walking/lesson30_regex/task2/Main.java @@ -18,7 +18,7 @@ * Если невалидна – бросьте из метода исключение, указывающее на ошибку валидации. */ public class Main { - private static final String FULL_NAME_REGEX = "[А-Я][А-Яа-я-]* [А-Я][а-я]* [А-Я][а-я]*"; + private static final String FULL_NAME_REGEX = "[А-Я][А-Яа-я-]* [А-Яа-я]* [А-Яа-я]*"; private static final String NAME_REGEX = "[А-Я][а-я]*"; private static final String DOUBLE_SURNAME_REGEX = "[А-Я][а-я]*-[А-Я][а-я]*"; @@ -31,13 +31,26 @@ public static void main(String[] args) { public static FullName getFullName(String fullName) { if (!isFullNameValid(fullName)) { - throw new InvalidFullNameException(); + throw new InvalidFullNameException("Полное имя указано некорректно."); } String[] fullNameArr = fullName.split(" "); - if (isSurnameValid(fullNameArr[0]) && isNameValid(fullNameArr[1]) && isNameValid(fullNameArr[2])) { - return new FullName(fullNameArr[0], fullNameArr[1], fullNameArr[2]); + String surname = fullNameArr[0]; + String name = fullNameArr[1]; + String patronymic = fullNameArr[2]; + + if (!isSurnameValid(surname)) { + throw new InvalidFullNameException("Фамилия указана некорректно: " + surname); + } + + if (!isNameValid(name)) { + throw new InvalidFullNameException("Имя указано некорректно: " + name); } - throw new InvalidFullNameException(); + + if (!isNameValid(patronymic)) { + throw new InvalidFullNameException("Отчество указано некорректно: " + patronymic); + } + + return new FullName(surname, name, patronymic); } public static boolean isFullNameValid(String fullName) { diff --git a/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java index cbf9fb789..8a6aa606e 100644 --- a/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java +++ b/src/com/walking/lesson30_regex/task2/exeption/InvalidFullNameException.java @@ -1,7 +1,7 @@ package com.walking.lesson30_regex.task2.exeption; public class InvalidFullNameException extends RuntimeException { - public InvalidFullNameException() { - super("Имя указано некорректно."); + public InvalidFullNameException(String message) { + super(message); } } diff --git a/src/com/walking/lesson30_regex/task3/Main.java b/src/com/walking/lesson30_regex/task3/Main.java index 482c76032..05351d62a 100644 --- a/src/com/walking/lesson30_regex/task3/Main.java +++ b/src/com/walking/lesson30_regex/task3/Main.java @@ -28,7 +28,10 @@ public static void main(String[] args) { .trim() .toLowerCase(); - System.out.printf("Найдено уникальных слов: %d", countWords(splitPhrase(phrase))); + String[] words = splitPhrase(phrase); + if (validateWords(words)) { + System.out.printf("Найдено уникальных слов: %d", countWords(words)); + } } public static int countWords(String[] phrase) { @@ -47,14 +50,13 @@ public static int countWords(String[] phrase) { return counter; } - public static String[] splitPhrase(String phrase) { - String[] words = phrase.split("\\s+"); + public static boolean validateWords(String[] words) { for (String word : words) { if (!validateWord(word)) { throw new InvalidWordException("Некорректное слово: " + word); } } - return words; + return true; } public static boolean validateWord(String word) { @@ -80,4 +82,8 @@ public static boolean isUnique(String[] phrase, int num) { return true; } + + private static String[] splitPhrase(String phrase) { + return phrase.split("\\s+"); + } } From ad8e5f5b32435ec3b73322a2b352f18b5fcc5e08 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 9 Jul 2025 13:45:48 +0300 Subject: [PATCH 083/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson21_immutable_object/car/Car.java | 2 +- .../walking/lesson32_files_1/task3/Main.java | 18 ++++++------- .../task3/repository/CarRepository.java | 25 +++++++++++-------- .../task3/service/CarService.java | 11 +++++--- 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/com/walking/lesson21_immutable_object/car/Car.java b/src/com/walking/lesson21_immutable_object/car/Car.java index 46ed2f9fb..ce38198fd 100644 --- a/src/com/walking/lesson21_immutable_object/car/Car.java +++ b/src/com/walking/lesson21_immutable_object/car/Car.java @@ -15,7 +15,7 @@ public Car(CarIdentifier identifier) { @Override public String toString() { - return "Машина марки " + identifier.getBrand() + ", владелец: " + owner + ", номер: " + identifier.getNumber(); + return identifier.getBrand() + ", " + owner + ", " + identifier.getNumber(); } public CarIdentifier getIdentifier() { diff --git a/src/com/walking/lesson32_files_1/task3/Main.java b/src/com/walking/lesson32_files_1/task3/Main.java index 860eea228..c77879b9c 100644 --- a/src/com/walking/lesson32_files_1/task3/Main.java +++ b/src/com/walking/lesson32_files_1/task3/Main.java @@ -1,13 +1,11 @@ package com.walking.lesson32_files_1.task3; import com.walking.lesson21_immutable_object.car.Car; +import com.walking.lesson32_files_1.task3.repository.CarRepository; import com.walking.lesson32_files_1.task3.service.CarService; import java.io.IOException; -import static com.walking.lesson32_files_1.task3.repository.CarRepository.*; -import static com.walking.lesson32_files_1.task3.service.CarService.*; - /** * Реализуйте возможность добавления, удаления и изменения информации о машинах, * используя Задачи 1 и 2. @@ -16,14 +14,14 @@ */ public class Main { public static void main(String[] args) throws IOException { - saveCars(setCars()); - String[] cars = getCarInformation(readFile()); - CarService carService = new CarService(getAll(cars)); - carService.addCar(new Car("Волга", "Петрова О.Е.", "ер765к")); - carService.delete(new Car ("Audi", "Печкин Ф.Б.", "уе777к")); - carService.update(new Car("BMW", "Михайлова Р.Г.", "ос025р")); - saveCars(carService.getCars()); + CarRepository repository = new CarRepository(); + + CarService service = new CarService(repository.findAll()); + service.addCar(new Car("Волга", "Курочкин Л.Д.", "зщ876е")); + service.update(new Car("Audi", "Вовочкин Д.Е.", "уе777к")); + service.delete(new Car("Ford", "Снегирь Ю.В.", "мр666м")); + repository.saveAll(service.getCars()); } private static Car[] setCars() { diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java index dd086b447..7339edb8c 100644 --- a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -1,4 +1,5 @@ package com.walking.lesson32_files_1.task3.repository; + import com.walking.lesson21_immutable_object.car.Car; import java.io.FileOutputStream; @@ -8,7 +9,7 @@ public class CarRepository { public static final String FILE_LOCATION = "./resources/carCatalog.txt"; - public static void saveCars(Car[] cars) throws IOException { + public void saveAll(Car[] cars) { try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION)) { for (Car car : cars) { String carInfo = car.toString() + "\n"; @@ -22,16 +23,17 @@ public static void saveCars(Car[] cars) throws IOException { } } - public static Car[] getAll(String[] cars) { - Car[] carsArr = new Car[cars.length]; + public Car[] findAll() throws IOException { + String[] carsInfo = readFile().split("\n"); + Car[] carsArr = new Car[carsInfo.length]; + for (int i = 0; i < carsArr.length; i++) { - String[] info = cars[i].split(","); - carsArr[i] = new Car(info[0].trim(), info[1].trim(), info[2].trim()); + carsArr[i] = getCar(carsInfo[i]); } return carsArr; } - public static String readFile() throws IOException { + private String readFile() throws IOException { StringBuilder cars = new StringBuilder(); try (FileReader reader = new FileReader(FILE_LOCATION)) { int i; @@ -42,10 +44,11 @@ public static String readFile() throws IOException { return cars.toString().trim(); } - public static String[] getCarInformation(String cars) { - return cars.replaceAll("Машина марки", "") - .replaceAll("владелец:", "") - .replaceAll("номер:", "") - .split("\n"); + private Car getCar(String car) { + String[] info = car.split(","); + String brand = info[0] == null ? null : info[0].trim(); + String owner = info[1] == null ? null : info[1].trim(); + String number = info[2] == null ? null : info[2].trim(); + return new Car(brand, owner, number); } } diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java index 4b5324a08..6e89dace8 100644 --- a/src/com/walking/lesson32_files_1/task3/service/CarService.java +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -17,6 +17,7 @@ public void addCar(Car car) { } cars = Arrays.copyOf(cars, cars.length + 1); cars[cars.length - 1] = car; + System.out.println("Машина добавлена."); } public void update(Car car) { @@ -28,6 +29,7 @@ public void update(Car car) { } existedCar.setOwner(car.getOwner()); + System.out.println("Информация о владельце обновлена."); } public void delete(Car car) { @@ -49,6 +51,11 @@ public void delete(Car car) { } cars = updatedCars; + System.out.println("Машина удалена."); + } + + public Car[] getCars() { + return cars; } private Car find(Car car) { @@ -68,8 +75,4 @@ private int getIndex(Car car) { } return -1; } - - public Car[] getCars() { - return cars; - } } From 501306c253d8ba0de22da3784904d6dda93dd0d5 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 10 Jul 2025 12:10:54 +0300 Subject: [PATCH 084/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson33_files_2/task1/var1/Main.java | 4 ++-- src/com/walking/lesson33_files_2/task1/var2/Main.java | 5 +++-- src/com/walking/lesson33_files_2/task1/var3/Main.java | 5 +++-- src/com/walking/lesson33_files_2/task2/var1/Main.java | 7 +++---- src/com/walking/lesson33_files_2/task2/var2/Main.java | 5 +++-- src/com/walking/lesson33_files_2/task2/var3/Main.java | 5 +++-- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/com/walking/lesson33_files_2/task1/var1/Main.java b/src/com/walking/lesson33_files_2/task1/var1/Main.java index 4844d2be9..0274bd503 100644 --- a/src/com/walking/lesson33_files_2/task1/var1/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var1/Main.java @@ -14,7 +14,7 @@ * Вариант 3: BufferedWriter. */ public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static final File FILE = new File("./resources/carCatalog.txt"); public static void main(String[] args) throws IOException { Car[] cars = new Car[6]; @@ -29,7 +29,7 @@ public static void main(String[] args) throws IOException { } public static void saveCars(Car[] cars) throws IOException { - try (FileWriter writer = new FileWriter(FILE_LOCATION)) { + try (FileWriter writer = new FileWriter(FILE)) { for (Car car : cars) { String carInfo = car.toString(); writer.write(carInfo); diff --git a/src/com/walking/lesson33_files_2/task1/var2/Main.java b/src/com/walking/lesson33_files_2/task1/var2/Main.java index cac299641..95281ba46 100644 --- a/src/com/walking/lesson33_files_2/task1/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java @@ -3,6 +3,7 @@ import com.walking.lesson19_object_methods.car.Car; import java.io.BufferedOutputStream; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -12,7 +13,7 @@ * (у меня не выходит) */ public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog1.txt"; + public static final File FILE = new File( "./resources/carCatalog1.txt"); public static void main(String[] args) throws IOException { Car[] cars = new Car[5]; @@ -26,7 +27,7 @@ public static void main(String[] args) throws IOException { } public static void saveCars(Car[] cars) throws IOException { - try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION); + try (FileOutputStream fos = new FileOutputStream(FILE); BufferedOutputStream bos = new BufferedOutputStream(fos)) { for (Car car : cars) { String carInfo = car.getBrand() + ", " + car.getOwner() + ", " + car.getNumber() + "\n"; diff --git a/src/com/walking/lesson33_files_2/task1/var3/Main.java b/src/com/walking/lesson33_files_2/task1/var3/Main.java index 4cb4a3a40..c75d9e519 100644 --- a/src/com/walking/lesson33_files_2/task1/var3/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var3/Main.java @@ -3,11 +3,12 @@ import com.walking.lesson19_object_methods.car.Car; import java.io.BufferedWriter; +import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog3.txt"; + public static final File FILE = new File( "./resources/carCatalog3.txt"); public static void main(String[] args) throws IOException { Car[] cars = new Car[6]; @@ -22,7 +23,7 @@ public static void main(String[] args) throws IOException { } public static void saveCars(Car[] cars) throws IOException { - try (FileWriter writer = new FileWriter(FILE_LOCATION); + try (FileWriter writer = new FileWriter(FILE); BufferedWriter bw = new BufferedWriter(writer)) { for (Car car : cars) { String carInfo = car.toString(); diff --git a/src/com/walking/lesson33_files_2/task2/var1/Main.java b/src/com/walking/lesson33_files_2/task2/var1/Main.java index b2487ce51..d760bb771 100644 --- a/src/com/walking/lesson33_files_2/task2/var1/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var1/Main.java @@ -2,8 +2,7 @@ import com.walking.lesson19_object_methods.car.Car; -import java.io.BufferedInputStream; -import java.io.FileInputStream; +import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; @@ -18,7 +17,7 @@ * Вариант 3: BufferedReader. */ public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static final File FILE = new File("./resources/carCatalog.txt"); public static void main(String[] args) throws IOException { String text = readFile(); @@ -34,7 +33,7 @@ public static void main(String[] args) throws IOException { public static String readFile() throws IOException { StringBuilder cars = new StringBuilder(); - try (FileReader reader = new FileReader(FILE_LOCATION)) { + try (FileReader reader = new FileReader(FILE)) { int i; while ((i = reader.read()) != -1) { cars.append((char) i); diff --git a/src/com/walking/lesson33_files_2/task2/var2/Main.java b/src/com/walking/lesson33_files_2/task2/var2/Main.java index b72636550..6b54315b2 100644 --- a/src/com/walking/lesson33_files_2/task2/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var2/Main.java @@ -3,12 +3,13 @@ import com.walking.lesson19_object_methods.car.Car; import java.io.BufferedInputStream; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Scanner; public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog1.txt"; + public static final File FILE = new File("./resources/carCatalog1.txt"); public static void main(String[] args) throws IOException { String text = readFile(); @@ -24,7 +25,7 @@ public static void main(String[] args) throws IOException { public static String readFile() throws IOException { StringBuilder cars = new StringBuilder(); - try (FileInputStream fis = new FileInputStream(FILE_LOCATION); + try (FileInputStream fis = new FileInputStream(FILE); BufferedInputStream bis = new BufferedInputStream(fis)) { int i; while ((i = bis.read()) != -1) { diff --git a/src/com/walking/lesson33_files_2/task2/var3/Main.java b/src/com/walking/lesson33_files_2/task2/var3/Main.java index eaf82541b..a0c627e38 100644 --- a/src/com/walking/lesson33_files_2/task2/var3/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var3/Main.java @@ -3,12 +3,13 @@ import com.walking.lesson19_object_methods.car.Car; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class Main { - public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public static final File FILE = new File("./resources/carCatalog.txt"); public static void main(String[] args) throws IOException { String text = readFile(); @@ -24,7 +25,7 @@ public static void main(String[] args) throws IOException { public static String readFile() throws IOException { StringBuilder cars = new StringBuilder(); - try (BufferedReader br = new BufferedReader(new FileReader(FILE_LOCATION))) { + try (BufferedReader br = new BufferedReader(new FileReader(FILE))) { int i; while ((i = br.read()) != -1) { cars.append((char) i); From 7474b5595b5005a7b578569854205917d4f5771d Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 10 Jul 2025 12:15:18 +0300 Subject: [PATCH 085/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson33_files_2/task1/var1/Main.java | 2 +- src/com/walking/lesson33_files_2/task1/var2/Main.java | 2 +- src/com/walking/lesson33_files_2/task1/var3/Main.java | 2 +- src/com/walking/lesson33_files_2/task2/var1/Main.java | 2 +- src/com/walking/lesson33_files_2/task2/var2/Main.java | 2 +- src/com/walking/lesson33_files_2/task2/var3/Main.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/com/walking/lesson33_files_2/task1/var1/Main.java b/src/com/walking/lesson33_files_2/task1/var1/Main.java index 0274bd503..44fc593c0 100644 --- a/src/com/walking/lesson33_files_2/task1/var1/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var1/Main.java @@ -14,7 +14,7 @@ * Вариант 3: BufferedWriter. */ public class Main { - public static final File FILE = new File("./resources/carCatalog.txt"); + public static final File FILE = new File("./resources", "carCatalog.txt"); public static void main(String[] args) throws IOException { Car[] cars = new Car[6]; diff --git a/src/com/walking/lesson33_files_2/task1/var2/Main.java b/src/com/walking/lesson33_files_2/task1/var2/Main.java index 95281ba46..fa6404caf 100644 --- a/src/com/walking/lesson33_files_2/task1/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java @@ -13,7 +13,7 @@ * (у меня не выходит) */ public class Main { - public static final File FILE = new File( "./resources/carCatalog1.txt"); + public static final File FILE = new File( "./resources", "carCatalog1.txt"); public static void main(String[] args) throws IOException { Car[] cars = new Car[5]; diff --git a/src/com/walking/lesson33_files_2/task1/var3/Main.java b/src/com/walking/lesson33_files_2/task1/var3/Main.java index c75d9e519..6f4f899ad 100644 --- a/src/com/walking/lesson33_files_2/task1/var3/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var3/Main.java @@ -8,7 +8,7 @@ import java.io.IOException; public class Main { - public static final File FILE = new File( "./resources/carCatalog3.txt"); + public static final File FILE = new File( "./resources", "carCatalog.txt"); public static void main(String[] args) throws IOException { Car[] cars = new Car[6]; diff --git a/src/com/walking/lesson33_files_2/task2/var1/Main.java b/src/com/walking/lesson33_files_2/task2/var1/Main.java index d760bb771..58c98ae20 100644 --- a/src/com/walking/lesson33_files_2/task2/var1/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var1/Main.java @@ -17,7 +17,7 @@ * Вариант 3: BufferedReader. */ public class Main { - public static final File FILE = new File("./resources/carCatalog.txt"); + public static final File FILE = new File("./resources", "carCatalog.txt"); public static void main(String[] args) throws IOException { String text = readFile(); diff --git a/src/com/walking/lesson33_files_2/task2/var2/Main.java b/src/com/walking/lesson33_files_2/task2/var2/Main.java index 6b54315b2..3efce5e1f 100644 --- a/src/com/walking/lesson33_files_2/task2/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var2/Main.java @@ -9,7 +9,7 @@ import java.util.Scanner; public class Main { - public static final File FILE = new File("./resources/carCatalog1.txt"); + public static final File FILE = new File("./resources", "carCatalog1.txt"); public static void main(String[] args) throws IOException { String text = readFile(); diff --git a/src/com/walking/lesson33_files_2/task2/var3/Main.java b/src/com/walking/lesson33_files_2/task2/var3/Main.java index a0c627e38..259624ce7 100644 --- a/src/com/walking/lesson33_files_2/task2/var3/Main.java +++ b/src/com/walking/lesson33_files_2/task2/var3/Main.java @@ -9,7 +9,7 @@ import java.util.Scanner; public class Main { - public static final File FILE = new File("./resources/carCatalog.txt"); + public static final File FILE = new File("./resources", "carCatalog.txt"); public static void main(String[] args) throws IOException { String text = readFile(); From c738c0b24232d3edaf1649061b900f2abc013638 Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 11 Jul 2025 15:19:43 +0300 Subject: [PATCH 086/131] lesson 34, task 1 --- .../lesson34_date_time/task1/Main.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/com/walking/lesson34_date_time/task1/Main.java b/src/com/walking/lesson34_date_time/task1/Main.java index 9e156d996..6e5694898 100644 --- a/src/com/walking/lesson34_date_time/task1/Main.java +++ b/src/com/walking/lesson34_date_time/task1/Main.java @@ -1,10 +1,30 @@ package com.walking.lesson34_date_time.task1; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Scanner; + /** * Реализуйте метод, возвращающий объект LocalDateTime на основании переданной строки. * Пример входящей строки: 20.12.2022 20:16:00. */ public class Main { - public static void main(String[] args) { + public static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.y HH:mm:ss"); + + public static void main(String[] args) throws InterruptedException { + System.out.print("Введите дату: "); + Scanner in = new Scanner(System.in); + String date = in.nextLine(); + + LocalDateTime dateTime = getLocalDateTime(date); + System.out.println(dateTime); + } + + public static LocalDateTime getLocalDateTime(String dateTime) { + try { + return LocalDateTime.parse(dateTime, formatter); + } catch (Exception e) { + throw new RuntimeException("Дата указана некорректно."); + } } } From 62e7730d3d6dd1b8bb7049726818bdaf43df480a Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 11 Jul 2025 15:32:33 +0300 Subject: [PATCH 087/131] lesson 34, task 2 --- .../lesson34_date_time/task2/Main.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/com/walking/lesson34_date_time/task2/Main.java b/src/com/walking/lesson34_date_time/task2/Main.java index fc6d7351c..5c6ee2747 100644 --- a/src/com/walking/lesson34_date_time/task2/Main.java +++ b/src/com/walking/lesson34_date_time/task2/Main.java @@ -1,10 +1,41 @@ package com.walking.lesson34_date_time.task2; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Scanner; + /** * Реализуйте программу, выводящую в консоль сообщение, * являются ли введенные с клавиатуры дата и время больше или меньше текущего. */ public class Main { + public static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.y HH:mm"); + public static void main(String[] args) { + System.out.print("Введите дату: "); + Scanner in = new Scanner(System.in); + String date = in.nextLine(); + + LocalDateTime dateTime = getLocalDateTime(date); + compareDateTime(dateTime); + } + + public static void compareDateTime(LocalDateTime dateTime) { + LocalDateTime currentDateTime = LocalDateTime.now(); + if (currentDateTime.isAfter(dateTime)) { + System.out.println("Указанная дата была раньше текущей."); + } else if (currentDateTime.isBefore(dateTime)) { + System.out.println("Указанная дата наступит позже текущей."); + } else { + System.out.println("Указана текущая дата."); + } + } + + private static LocalDateTime getLocalDateTime(String dateTime) { + try { + return LocalDateTime.parse(dateTime, formatter); + } catch (Exception e) { + throw new RuntimeException("Дата указана некорректно."); + } } } From 962c590fc11e37e9ae6655036ae30a51d845b716 Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 11 Jul 2025 15:33:02 +0300 Subject: [PATCH 088/131] lesson 34, task 2 --- src/com/walking/lesson34_date_time/task2/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/walking/lesson34_date_time/task2/Main.java b/src/com/walking/lesson34_date_time/task2/Main.java index 5c6ee2747..27a769d83 100644 --- a/src/com/walking/lesson34_date_time/task2/Main.java +++ b/src/com/walking/lesson34_date_time/task2/Main.java @@ -23,9 +23,9 @@ public static void main(String[] args) { public static void compareDateTime(LocalDateTime dateTime) { LocalDateTime currentDateTime = LocalDateTime.now(); if (currentDateTime.isAfter(dateTime)) { - System.out.println("Указанная дата была раньше текущей."); + System.out.println("Указанна дата раньше текущей."); } else if (currentDateTime.isBefore(dateTime)) { - System.out.println("Указанная дата наступит позже текущей."); + System.out.println("Указанна дата позже текущей."); } else { System.out.println("Указана текущая дата."); } From 5abfe4974e4445989f20a8423af6dd22b38a98df Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 23 Jul 2025 15:01:40 +0300 Subject: [PATCH 089/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson30_regex/task3/Main.java | 4 +-- .../walking/lesson32_files_1/task3/Main.java | 4 ++- .../task3/repository/CarRepository.java | 5 +-- .../task3/service/CarService.java | 32 +++++++++++-------- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/com/walking/lesson30_regex/task3/Main.java b/src/com/walking/lesson30_regex/task3/Main.java index 05351d62a..0007ad617 100644 --- a/src/com/walking/lesson30_regex/task3/Main.java +++ b/src/com/walking/lesson30_regex/task3/Main.java @@ -64,9 +64,7 @@ public static boolean validateWord(String word) { return word.matches(WORD); } - Pattern multiplyHyphens = Pattern.compile("--+"); - Matcher matcher = multiplyHyphens.matcher(word); - if (matcher.find()) { + if (word.matches("^.*--+.*$")) { return false; } diff --git a/src/com/walking/lesson32_files_1/task3/Main.java b/src/com/walking/lesson32_files_1/task3/Main.java index c77879b9c..87d698f97 100644 --- a/src/com/walking/lesson32_files_1/task3/Main.java +++ b/src/com/walking/lesson32_files_1/task3/Main.java @@ -15,8 +15,10 @@ public class Main { public static void main(String[] args) throws IOException { CarRepository repository = new CarRepository(); + repository.saveAll(setCars()); + repository.findAll(); - CarService service = new CarService(repository.findAll()); + CarService service = new CarService(repository); service.addCar(new Car("Волга", "Курочкин Л.Д.", "зщ876е")); service.update(new Car("Audi", "Вовочкин Д.Е.", "уе777к")); service.delete(new Car("Ford", "Снегирь Ю.В.", "мр666м")); diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java index 7339edb8c..4e5afff02 100644 --- a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -8,6 +8,7 @@ public class CarRepository { public static final String FILE_LOCATION = "./resources/carCatalog.txt"; + public Car[] carsArr; public void saveAll(Car[] cars) { try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION)) { @@ -23,14 +24,14 @@ public void saveAll(Car[] cars) { } } - public Car[] findAll() throws IOException { + public void findAll() throws IOException { String[] carsInfo = readFile().split("\n"); Car[] carsArr = new Car[carsInfo.length]; for (int i = 0; i < carsArr.length; i++) { carsArr[i] = getCar(carsInfo[i]); } - return carsArr; + this.carsArr = carsArr; } private String readFile() throws IOException { diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java index 6e89dace8..912e3f08b 100644 --- a/src/com/walking/lesson32_files_1/task3/service/CarService.java +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -1,13 +1,14 @@ package com.walking.lesson32_files_1.task3.service; import com.walking.lesson21_immutable_object.car.Car; +import com.walking.lesson32_files_1.task3.repository.CarRepository; import java.util.Arrays; public class CarService { - private Car[] cars; + public final CarRepository repository; - public CarService(Car[] cars) { - this.cars = cars; + public CarService(CarRepository repository) { + this.repository = repository; } public void addCar(Car car) { @@ -15,8 +16,10 @@ public void addCar(Car car) { System.out.println("Такая машина уже существует."); return; } - cars = Arrays.copyOf(cars, cars.length + 1); - cars[cars.length - 1] = car; + + int length = repository.carsArr.length; + repository.carsArr = Arrays.copyOf(repository.carsArr, length + 1); + repository.carsArr[length - 1] = car; System.out.println("Машина добавлена."); } @@ -39,27 +42,28 @@ public void delete(Car car) { return; } - Car[] updatedCars = new Car[cars.length - 1]; - for (int i = 0; i < cars.length; i++) { + int length = repository.carsArr.length; + Car[] updatedCars = new Car[length - 1]; + for (int i = 0; i < length; i++) { if (i < index) { - updatedCars[i] = cars[i]; + updatedCars[i] = repository.carsArr[i]; } if (i > index) { - updatedCars[i - 1] = cars[i]; + updatedCars[i - 1] = repository.carsArr[i]; } } - cars = updatedCars; + repository.carsArr = updatedCars; System.out.println("Машина удалена."); } public Car[] getCars() { - return cars; + return repository.carsArr; } private Car find(Car car) { - for (Car c : cars) { + for (Car c : repository.carsArr) { if (c.equals(car)) { return c; } @@ -68,8 +72,8 @@ private Car find(Car car) { } private int getIndex(Car car) { - for (int i = 0; i < cars.length; i++) { - if (cars[i].equals(car)) { + for (int i = 0; i < repository.carsArr.length; i++) { + if (repository.carsArr[i].equals(car)) { return i; } } From f1a7b9a1bc18060306075e1ab66f507204e0a554 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 23 Jul 2025 15:41:50 +0300 Subject: [PATCH 090/131] lesson 34, task 3 --- .../lesson34_date_time/task3/Main.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/com/walking/lesson34_date_time/task3/Main.java b/src/com/walking/lesson34_date_time/task3/Main.java index 3dcda11b6..0f276ad97 100644 --- a/src/com/walking/lesson34_date_time/task3/Main.java +++ b/src/com/walking/lesson34_date_time/task3/Main.java @@ -1,10 +1,80 @@ package com.walking.lesson34_date_time.task3; +import java.time.LocalDateTime; +import java.time.Month; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.GregorianCalendar; +import java.util.Scanner; + /** * Реализуйте программу, выводящую в консоль количество времени между двумя * введенными с клавиатуры датами и временем в секундах, минутах, часах, днях, месяцах и годах. */ public class Main { + public static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.y HH:mm:ss"); + public static void main(String[] args) { + System.out.print("Введите первую дату: "); + Scanner in = new Scanner(System.in); + String date1 = in.nextLine(); + System.out.print("Введите вторую дату: "); + String date2 = in.nextLine(); + + System.out.print(countTimeBetweenDates(getLocalDateTime(date1), getLocalDateTime(date2))); + } + + public static String countTimeBetweenDates(LocalDateTime date1, LocalDateTime date2) { + long seconds = Math.abs(date1.until(date2, ChronoUnit.SECONDS)); + long minutes = Math.abs(date1.until(date2, ChronoUnit.MINUTES)); + long hours = Math.abs(date1.until(date2, ChronoUnit.HOURS)); + long days = Math.abs(date1.until(date2, ChronoUnit.DAYS)); + long months = Math.abs(date1.until(date2, ChronoUnit.MONTHS)); + long years = Math.abs(date1.until(date2, ChronoUnit.YEARS)); + + long finalMonth = months % 12; + int finalDays; + if (date1.isBefore(date2)) { + finalDays = countDays(date1, date2); + } else { + finalDays = countDays(date2, date1); + } + long finalHours = hours % 24; + long finalMinutes = minutes % 60; + long finalSeconds = seconds % 60; + + return """ + Seconds: %d + Minutes: %d + Hours: %d + Days: %d + Months: %d + Years: %d + + Summary: %d years, %d months, %d days, %d hours, %d minutes, %d seconds + """.formatted(seconds, minutes, hours, days, months, years, years, finalMonth, finalDays, finalHours, + finalMinutes, finalSeconds); + } + + private static LocalDateTime getLocalDateTime(String dateTime) { + try { + return LocalDateTime.parse(dateTime, formatter); + } catch (Exception e) { + throw new RuntimeException("Дата указана некорректно."); + } + } + + private static int countDays(LocalDateTime dateBefore, LocalDateTime dateAfter) { + int day1 = dateBefore.getDayOfMonth(); + int day2 = dateAfter.getDayOfMonth(); + + if (day1 < day2) { + return day2 - day1; + } else { + LocalDateTime date = dateAfter.minusMonths(1); + Month month = date.getMonth(); + int daysInMonth = month.length(new GregorianCalendar().isLeapYear(date.getYear())); + return daysInMonth - day1 + day2; + } } } From 5b17229e53e2a2552db82c978ec5cb5f2c5fd8ac Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 10 Sep 2025 19:25:01 +0300 Subject: [PATCH 091/131] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=B0...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson30_regex/task3/Main.java | 11 ++---- .../walking/lesson32_files_1/task3/Main.java | 4 +- .../task3/repository/CarRepository.java | 39 +++++++++++++++++-- .../task3/service/CarService.java | 34 +++++----------- .../lesson33_files_2/task1/var2/Main.java | 7 +++- .../lesson34_date_time/task3/Main.java | 35 ++++++++++------- 6 files changed, 76 insertions(+), 54 deletions(-) diff --git a/src/com/walking/lesson30_regex/task3/Main.java b/src/com/walking/lesson30_regex/task3/Main.java index 0007ad617..21e6832a0 100644 --- a/src/com/walking/lesson30_regex/task3/Main.java +++ b/src/com/walking/lesson30_regex/task3/Main.java @@ -3,8 +3,6 @@ import com.walking.lesson30_regex.task3.exception.InvalidWordException; import java.util.Scanner; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * Реализуйте задачу @@ -29,9 +27,9 @@ public static void main(String[] args) { .toLowerCase(); String[] words = splitPhrase(phrase); - if (validateWords(words)) { - System.out.printf("Найдено уникальных слов: %d", countWords(words)); - } + validateWords(words); + System.out.printf("Найдено уникальных слов: %d", countWords(words)); + } public static int countWords(String[] phrase) { @@ -50,13 +48,12 @@ public static int countWords(String[] phrase) { return counter; } - public static boolean validateWords(String[] words) { + public static void validateWords(String[] words) { for (String word : words) { if (!validateWord(word)) { throw new InvalidWordException("Некорректное слово: " + word); } } - return true; } public static boolean validateWord(String word) { diff --git a/src/com/walking/lesson32_files_1/task3/Main.java b/src/com/walking/lesson32_files_1/task3/Main.java index 87d698f97..8fd6c56f5 100644 --- a/src/com/walking/lesson32_files_1/task3/Main.java +++ b/src/com/walking/lesson32_files_1/task3/Main.java @@ -19,11 +19,11 @@ public static void main(String[] args) throws IOException { repository.findAll(); CarService service = new CarService(repository); - service.addCar(new Car("Волга", "Курочкин Л.Д.", "зщ876е")); + service.add(new Car("Волга", "Курочкин Л.Д.", "зщ876е")); service.update(new Car("Audi", "Вовочкин Д.Е.", "уе777к")); service.delete(new Car("Ford", "Снегирь Ю.В.", "мр666м")); - repository.saveAll(service.getCars()); + repository.saveAll(service.getAll()); } private static Car[] setCars() { diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java index 4e5afff02..eb4ceb5ed 100644 --- a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -5,10 +5,11 @@ import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; +import java.util.Arrays; public class CarRepository { public static final String FILE_LOCATION = "./resources/carCatalog.txt"; - public Car[] carsArr; + private Car[] carsArr; public void saveAll(Car[] cars) { try (FileOutputStream fos = new FileOutputStream(FILE_LOCATION)) { @@ -26,11 +27,41 @@ public void saveAll(Car[] cars) { public void findAll() throws IOException { String[] carsInfo = readFile().split("\n"); - Car[] carsArr = new Car[carsInfo.length]; + Car[] arr = new Car[carsInfo.length]; - for (int i = 0; i < carsArr.length; i++) { - carsArr[i] = getCar(carsInfo[i]); + for (int i = 0; i < arr.length; i++) { + arr[i] = getCar(carsInfo[i]); } + this.carsArr = arr; + } + + public Car[] deleteCar(int index) { + int length = carsArr.length; + Car[] updatedCars = new Car[length - 1]; + for (int i = 0; i < length; i++) { + if (i < index) { + updatedCars[i] = carsArr[i]; + } + + if (i > index) { + updatedCars[i - 1] = carsArr[i]; + } + } + return updatedCars; + } + + public Car[] addCar(Car car) { + int length = carsArr.length; + Car[] updatedCars = Arrays.copyOf(carsArr, length + 1); + updatedCars[length] = car; + return updatedCars; + } + + public Car[] getRepository() { + return carsArr; + } + + public void setRepository(Car[] carsArr) { this.carsArr = carsArr; } diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java index 912e3f08b..99db6fcef 100644 --- a/src/com/walking/lesson32_files_1/task3/service/CarService.java +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -2,8 +2,6 @@ import com.walking.lesson21_immutable_object.car.Car; import com.walking.lesson32_files_1.task3.repository.CarRepository; -import java.util.Arrays; - public class CarService { public final CarRepository repository; @@ -11,15 +9,13 @@ public CarService(CarRepository repository) { this.repository = repository; } - public void addCar(Car car) { + public void add(Car car) { if (find(car) != null) { System.out.println("Такая машина уже существует."); return; } - int length = repository.carsArr.length; - repository.carsArr = Arrays.copyOf(repository.carsArr, length + 1); - repository.carsArr[length - 1] = car; + repository.setRepository(repository.addCar(car)); System.out.println("Машина добавлена."); } @@ -42,28 +38,17 @@ public void delete(Car car) { return; } - int length = repository.carsArr.length; - Car[] updatedCars = new Car[length - 1]; - for (int i = 0; i < length; i++) { - if (i < index) { - updatedCars[i] = repository.carsArr[i]; - } - - if (i > index) { - updatedCars[i - 1] = repository.carsArr[i]; - } - } - - repository.carsArr = updatedCars; + repository.setRepository(repository.deleteCar(index)); System.out.println("Машина удалена."); } - public Car[] getCars() { - return repository.carsArr; + public Car[] getAll() { + return repository.getRepository(); } private Car find(Car car) { - for (Car c : repository.carsArr) { + Car[] cars = getAll(); + for (Car c : cars) { if (c.equals(car)) { return c; } @@ -72,8 +57,9 @@ private Car find(Car car) { } private int getIndex(Car car) { - for (int i = 0; i < repository.carsArr.length; i++) { - if (repository.carsArr[i].equals(car)) { + Car[] cars = getAll(); + for (int i = 0; i < cars.length; i++) { + if (cars[i].equals(car)) { return i; } } diff --git a/src/com/walking/lesson33_files_2/task1/var2/Main.java b/src/com/walking/lesson33_files_2/task1/var2/Main.java index fa6404caf..1619ee099 100644 --- a/src/com/walking/lesson33_files_2/task1/var2/Main.java +++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java @@ -30,8 +30,7 @@ public static void saveCars(Car[] cars) throws IOException { try (FileOutputStream fos = new FileOutputStream(FILE); BufferedOutputStream bos = new BufferedOutputStream(fos)) { for (Car car : cars) { - String carInfo = car.getBrand() + ", " + car.getOwner() + ", " + car.getNumber() + "\n"; - byte[] buffer = carInfo.getBytes(); + byte[] buffer = getCarInfo(car).getBytes(); bos.write(buffer, 0, buffer.length); } System.out.println("Файл записан."); @@ -40,4 +39,8 @@ public static void saveCars(Car[] cars) throws IOException { throw new RuntimeException("Не удалось записать файл", ex); } } + + private static String getCarInfo(Car car) { + return "%s, %s, %s.\n".formatted(car.getBrand(), car.getOwner(), car.getNumber()); + } } diff --git a/src/com/walking/lesson34_date_time/task3/Main.java b/src/com/walking/lesson34_date_time/task3/Main.java index 0f276ad97..ea55865b4 100644 --- a/src/com/walking/lesson34_date_time/task3/Main.java +++ b/src/com/walking/lesson34_date_time/task3/Main.java @@ -33,14 +33,9 @@ public static String countTimeBetweenDates(LocalDateTime date1, LocalDateTime da long years = Math.abs(date1.until(date2, ChronoUnit.YEARS)); long finalMonth = months % 12; - int finalDays; - if (date1.isBefore(date2)) { - finalDays = countDays(date1, date2); - } else { - finalDays = countDays(date2, date1); - } - long finalHours = hours % 24; - long finalMinutes = minutes % 60; + int finalDays = date1.isBefore(date2) ? countDays(date1, date2) : countDays(date2, date1); + long finalHours = hours % 24; + long finalMinutes = minutes % 60; long finalSeconds = seconds % 60; return """ @@ -52,8 +47,18 @@ public static String countTimeBetweenDates(LocalDateTime date1, LocalDateTime da Years: %d Summary: %d years, %d months, %d days, %d hours, %d minutes, %d seconds - """.formatted(seconds, minutes, hours, days, months, years, years, finalMonth, finalDays, finalHours, - finalMinutes, finalSeconds); + """.formatted(seconds, + minutes, + hours, + days, + months, + years, + years, + finalMonth, + finalDays, + finalHours, + finalMinutes, + finalSeconds); } private static LocalDateTime getLocalDateTime(String dateTime) { @@ -70,11 +75,11 @@ private static int countDays(LocalDateTime dateBefore, LocalDateTime dateAfter) if (day1 < day2) { return day2 - day1; - } else { - LocalDateTime date = dateAfter.minusMonths(1); - Month month = date.getMonth(); - int daysInMonth = month.length(new GregorianCalendar().isLeapYear(date.getYear())); - return daysInMonth - day1 + day2; } + LocalDateTime date = dateAfter.minusMonths(1); + Month month = date.getMonth(); + int daysInMonth = month.length(new GregorianCalendar().isLeapYear(date.getYear())); + return daysInMonth - day1 + day2; + } } From 68240eea1d8e7c988e11e5b078f2345da3c20bad Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 10 Sep 2025 19:35:02 +0300 Subject: [PATCH 092/131] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=B0...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson32_files_1/task3/repository/CarRepository.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java index eb4ceb5ed..97d971e48 100644 --- a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -50,6 +50,9 @@ public Car[] deleteCar(int index) { return updatedCars; } + /** ты только про удаление написал, но я подумала, будет логично по аналогии сделать метод и с добавлением машины. + * если, конечно, я правильно поняла, какую логику сюда перенести надо было ахаха + */ public Car[] addCar(Car car) { int length = carsArr.length; Car[] updatedCars = Arrays.copyOf(carsArr, length + 1); From 751268c5032b85e804fc7d77eaa80d5faec98451 Mon Sep 17 00:00:00 2001 From: Rita Date: Sun, 14 Sep 2025 12:10:22 +0300 Subject: [PATCH 093/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson30_regex/task3/Main.java | 4 ++-- .../lesson32_files_1/task3/repository/CarRepository.java | 6 +++--- .../walking/lesson32_files_1/task3/service/CarService.java | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/walking/lesson30_regex/task3/Main.java b/src/com/walking/lesson30_regex/task3/Main.java index 21e6832a0..986d27d7b 100644 --- a/src/com/walking/lesson30_regex/task3/Main.java +++ b/src/com/walking/lesson30_regex/task3/Main.java @@ -50,13 +50,13 @@ public static int countWords(String[] phrase) { public static void validateWords(String[] words) { for (String word : words) { - if (!validateWord(word)) { + if (!isWordValid(word)) { throw new InvalidWordException("Некорректное слово: " + word); } } } - public static boolean validateWord(String word) { + public static boolean isWordValid(String word) { if (!word.contains("-")) { return word.matches(WORD); } diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java index 97d971e48..4998c135b 100644 --- a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -60,11 +60,11 @@ public Car[] addCar(Car car) { return updatedCars; } - public Car[] getRepository() { - return carsArr; + public Car[] getCarsArr() { + return Arrays.copyOf(carsArr, carsArr.length); } - public void setRepository(Car[] carsArr) { + public void setCarsArr(Car[] carsArr) { this.carsArr = carsArr; } diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java index 99db6fcef..64bac1813 100644 --- a/src/com/walking/lesson32_files_1/task3/service/CarService.java +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -15,7 +15,7 @@ public void add(Car car) { return; } - repository.setRepository(repository.addCar(car)); + repository.setCarsArr(repository.addCar(car)); System.out.println("Машина добавлена."); } @@ -38,12 +38,12 @@ public void delete(Car car) { return; } - repository.setRepository(repository.deleteCar(index)); + repository.setCarsArr(repository.deleteCar(index)); System.out.println("Машина удалена."); } public Car[] getAll() { - return repository.getRepository(); + return repository.getCarsArr(); } private Car find(Car car) { From f6a2af02a1c1b52e59ba085413097a8c313b6721 Mon Sep 17 00:00:00 2001 From: Rita Date: Sun, 14 Sep 2025 15:39:12 +0300 Subject: [PATCH 094/131] lesson 37, task 1 --- .../lesson37_collection_list/task1/Main.java | 32 ++++++ .../task1/exception/UnexpectedName.java | 7 ++ .../task1/model/Counter.java | 38 +++++++ .../task1/service/CounterService.java | 99 +++++++++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java create mode 100644 src/com/walking/lesson37_collection_list/task1/model/Counter.java create mode 100644 src/com/walking/lesson37_collection_list/task1/service/CounterService.java diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java index 4753b4e8f..611742fa0 100644 --- a/src/com/walking/lesson37_collection_list/task1/Main.java +++ b/src/com/walking/lesson37_collection_list/task1/Main.java @@ -1,5 +1,8 @@ package com.walking.lesson37_collection_list.task1; +import com.walking.lesson37_collection_list.task1.model.Counter; +import com.walking.lesson37_collection_list.task1.service.CounterService; + /** * Реализуйте задачу * ..., используя ArrayList. @@ -10,6 +13,35 @@ * Изменилось ли что-то в кодовой базе при использовании списка другой реализации? */ public class Main { + public static final String GAS_COUNTER_NAME = "Газ"; + public static final String COLD_WATER_COUNTER_NAME = "Холодная вода"; + public static final String HOT_WATER_COUNTER_NAME = "Горячая вода"; + public static final String ELECTRIC_COUNTER_NAME = "Электричество"; + + public static final String M_3_UNIT = "м3"; + public static final String KW_H_UNIT = "кВт/ч"; + public static void main(String[] args) { + Counter gasCounter = new Counter(GAS_COUNTER_NAME, M_3_UNIT); + Counter coldWaterCounter = new Counter(COLD_WATER_COUNTER_NAME, M_3_UNIT); + Counter hotWaterCounter = new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT); + Counter electricCounter = new Counter(ELECTRIC_COUNTER_NAME, KW_H_UNIT); + + CounterService counterService = new CounterService(gasCounter, coldWaterCounter); + counterService.add(hotWaterCounter); + counterService.increaseValue(hotWaterCounter, 23); + + counterService.add(new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT, 45)); + counterService.add(electricCounter); + counterService.incrementValue(gasCounter); + counterService.delete(coldWaterCounter); + + printCounterValues(counterService); + } + + public static void printCounterValues(CounterService counterService) { + for(Counter counter : counterService.getCounters()) { + counter.getInfo(); + } } } diff --git a/src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java b/src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java new file mode 100644 index 000000000..98658a605 --- /dev/null +++ b/src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java @@ -0,0 +1,7 @@ +package com.walking.lesson37_collection_list.task1.exception; + +public class UnexpectedName extends RuntimeException { + public UnexpectedName(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson37_collection_list/task1/model/Counter.java b/src/com/walking/lesson37_collection_list/task1/model/Counter.java new file mode 100644 index 000000000..1f82cc0fa --- /dev/null +++ b/src/com/walking/lesson37_collection_list/task1/model/Counter.java @@ -0,0 +1,38 @@ +package com.walking.lesson37_collection_list.task1.model; + +public class Counter { + private final String NAME; + private final String UNIT; + + private int value; + + public Counter(String NAME, String UNIT) { + this(NAME, UNIT, 0); + } + + public Counter(String NAME, String UNIT, int value) { + this.NAME = NAME; + this.UNIT = UNIT; + this.value = value; + } + + public String getNAME() { + return NAME; + } + + public String getUNIT() { + return UNIT; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + public void getInfo() { + System.out.printf("%s: %d %s%n", NAME, value, UNIT); + } +} diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java new file mode 100644 index 000000000..12091cc95 --- /dev/null +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -0,0 +1,99 @@ +package com.walking.lesson37_collection_list.task1.service; + +import com.walking.lesson37_collection_list.task1.exception.UnexpectedName; +import com.walking.lesson37_collection_list.task1.model.Counter; + +import java.util.ArrayList; +import java.util.List; + +import static java.util.List.of; + +public class CounterService { + private ArrayList counters; + + public CounterService(Counter... counters) { + this.counters = new ArrayList<>(of(counters)); + } + + public CounterService(List counters) { + this.counters = new ArrayList<>(counters); + } + + public Counter getByName(String name) throws UnexpectedName { + for (Counter counter : counters) { + if (name.equals(counter.getNAME())) { + return counter; + } + } + throw new UnexpectedName("Счётчика с указанным названием не существует: " + name); + } + + public void add(Counter counter) { + if(isContains(counter)) { + getByName(counter.getNAME()).setValue(counter.getValue()); + System.out.printf("Счётчик с названием '%s' уже существует. Данные обновлены.\n", counter.getNAME()); + return; + } + + if(counters.add(counter)) { + System.out.printf("Счётчик '%s' добавлен.\n", counter.getNAME()); + counters.trimToSize(); + } else { + System.out.println("Добавить счётчик не удалось."); + } + } + + public void delete(Counter counter) { + if(counters.remove(counter)) { + System.out.printf("Счётчик '%s' удалён.\n", counter.getNAME()); + counters.trimToSize(); + } else { + System.out.println("Удалить счётчик не удалось."); + } + } + + public void increaseValue(Counter counter, int value) { + int newValue = counter.getValue() + value; + counter.setValue(newValue); + System.out.printf("Данные счётчика '%s' обновлены.\n", counter.getNAME()); + } + + public void incrementValue(Counter counter) { + increaseValue(counter, 1); + } + + public void increaseValue(String name, int value) { + increaseValue(getByName(name), value); + } + + public void incrementValue(String name) { + incrementValue(getByName(name)); + } + + public void resetValue(Counter counter) { + counter.setValue(0); + } + + public void resetValue(String name) { + resetValue(getByName(name)); + } + + public ArrayList getCounters() { + return new ArrayList<>(counters); + } + + public void setCounters(List counters) { + if(!counters.isEmpty()) { + this.counters = new ArrayList<>(counters); + } + } + + private boolean isContains(Counter counter) { + for (Counter c : counters) { + if (counter.getNAME().equals(c.getNAME())) { + return true; + } + } + return false; + } +} From cdf1c4a71bdf0a8da1881737f480bc7776dccf17 Mon Sep 17 00:00:00 2001 From: Rita Date: Sun, 14 Sep 2025 15:46:03 +0300 Subject: [PATCH 095/131] lesson 37, task 1 --- .../task1/service/CounterService.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 12091cc95..15a4a5514 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -6,13 +6,11 @@ import java.util.ArrayList; import java.util.List; -import static java.util.List.of; - public class CounterService { private ArrayList counters; public CounterService(Counter... counters) { - this.counters = new ArrayList<>(of(counters)); + this.counters = new ArrayList<>(List.of(counters)); } public CounterService(List counters) { From 6a664d3e7ebdef40e84c3069d410b682b68bfeda Mon Sep 17 00:00:00 2001 From: Rita Date: Sun, 14 Sep 2025 16:14:31 +0300 Subject: [PATCH 096/131] lesson 37, task 1 --- src/com/walking/lesson37_collection_list/task1/Main.java | 3 +-- .../task1/service/CounterService.java | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java index 611742fa0..c2341a40b 100644 --- a/src/com/walking/lesson37_collection_list/task1/Main.java +++ b/src/com/walking/lesson37_collection_list/task1/Main.java @@ -32,8 +32,7 @@ public static void main(String[] args) { counterService.increaseValue(hotWaterCounter, 23); counterService.add(new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT, 45)); - counterService.add(electricCounter); - counterService.incrementValue(gasCounter); + counterService.incrementValue(electricCounter); counterService.delete(coldWaterCounter); printCounterValues(counterService); diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 15a4a5514..0b4a926e2 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -27,13 +27,13 @@ public Counter getByName(String name) throws UnexpectedName { } public void add(Counter counter) { - if(isContains(counter)) { + if (isContains(counter)) { getByName(counter.getNAME()).setValue(counter.getValue()); System.out.printf("Счётчик с названием '%s' уже существует. Данные обновлены.\n", counter.getNAME()); return; } - if(counters.add(counter)) { + if (counters.add(counter)) { System.out.printf("Счётчик '%s' добавлен.\n", counter.getNAME()); counters.trimToSize(); } else { @@ -42,7 +42,7 @@ public void add(Counter counter) { } public void delete(Counter counter) { - if(counters.remove(counter)) { + if (counters.remove(counter)) { System.out.printf("Счётчик '%s' удалён.\n", counter.getNAME()); counters.trimToSize(); } else { @@ -81,7 +81,7 @@ public ArrayList getCounters() { } public void setCounters(List counters) { - if(!counters.isEmpty()) { + if (!counters.isEmpty()) { this.counters = new ArrayList<>(counters); } } From 493af39172a933f1d9b788aceffa22ad5479ffff Mon Sep 17 00:00:00 2001 From: Rita Date: Sun, 14 Sep 2025 17:13:54 +0300 Subject: [PATCH 097/131] lesson 37, task 1 --- .../lesson37_collection_list/task1/Main.java | 1 + .../task1/service/CounterService.java | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java index c2341a40b..f4eeba00b 100644 --- a/src/com/walking/lesson37_collection_list/task1/Main.java +++ b/src/com/walking/lesson37_collection_list/task1/Main.java @@ -34,6 +34,7 @@ public static void main(String[] args) { counterService.add(new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT, 45)); counterService.incrementValue(electricCounter); counterService.delete(coldWaterCounter); + counterService.add(electricCounter); printCounterValues(counterService); } diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 0b4a926e2..0575b0917 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -1,6 +1,5 @@ package com.walking.lesson37_collection_list.task1.service; -import com.walking.lesson37_collection_list.task1.exception.UnexpectedName; import com.walking.lesson37_collection_list.task1.model.Counter; import java.util.ArrayList; @@ -17,19 +16,23 @@ public CounterService(List counters) { this.counters = new ArrayList<>(counters); } - public Counter getByName(String name) throws UnexpectedName { + public Counter getByName(String name) { for (Counter counter : counters) { if (name.equals(counter.getNAME())) { return counter; } } - throw new UnexpectedName("Счётчика с указанным названием не существует: " + name); + return null; } public void add(Counter counter) { + if (counter == null) { + System.out.println("Добавить счётчик не удалось."); + return; + } + if (isContains(counter)) { - getByName(counter.getNAME()).setValue(counter.getValue()); - System.out.printf("Счётчик с названием '%s' уже существует. Данные обновлены.\n", counter.getNAME()); + System.out.printf("Счётчик с названием '%s' уже существует.\n", counter.getNAME()); return; } @@ -51,6 +54,11 @@ public void delete(Counter counter) { } public void increaseValue(Counter counter, int value) { + if(counter == null) { + System.out.println("Обновить данные счётчика не удалось."); + return; + } + int newValue = counter.getValue() + value; counter.setValue(newValue); System.out.printf("Данные счётчика '%s' обновлены.\n", counter.getNAME()); From 347457cddf2f2fa1afe11d36b698bb4598bfe1e4 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 15 Sep 2025 12:35:17 +0300 Subject: [PATCH 098/131] lesson 37, task 1 --- .../lesson37_collection_list/task1/Main.java | 2 +- .../task1/service/CounterService.java | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java index f4eeba00b..166b39b9a 100644 --- a/src/com/walking/lesson37_collection_list/task1/Main.java +++ b/src/com/walking/lesson37_collection_list/task1/Main.java @@ -34,7 +34,7 @@ public static void main(String[] args) { counterService.add(new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT, 45)); counterService.incrementValue(electricCounter); counterService.delete(coldWaterCounter); - counterService.add(electricCounter); + counterService.add(null); printCounterValues(counterService); } diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 0575b0917..46c160af8 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -6,7 +6,7 @@ import java.util.List; public class CounterService { - private ArrayList counters; + private final ArrayList counters; public CounterService(Counter... counters) { this.counters = new ArrayList<>(List.of(counters)); @@ -26,7 +26,7 @@ public Counter getByName(String name) { } public void add(Counter counter) { - if (counter == null) { + if (isNull(counter)) { System.out.println("Добавить счётчик не удалось."); return; } @@ -88,12 +88,6 @@ public ArrayList getCounters() { return new ArrayList<>(counters); } - public void setCounters(List counters) { - if (!counters.isEmpty()) { - this.counters = new ArrayList<>(counters); - } - } - private boolean isContains(Counter counter) { for (Counter c : counters) { if (counter.getNAME().equals(c.getNAME())) { @@ -102,4 +96,8 @@ private boolean isContains(Counter counter) { } return false; } + + private boolean isNull(Counter counter) { + return counter == null; + } } From ffd43b28b3ca997fb5aa79e7ccdb6201e97be871 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 15 Sep 2025 16:25:23 +0300 Subject: [PATCH 099/131] lesson 37, task 1 --- .../task1/exception/UnexpectedName.java | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java diff --git a/src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java b/src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java deleted file mode 100644 index 98658a605..000000000 --- a/src/com/walking/lesson37_collection_list/task1/exception/UnexpectedName.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson37_collection_list.task1.exception; - -public class UnexpectedName extends RuntimeException { - public UnexpectedName(String message) { - super(message); - } -} From 12c02153e330017098265428ba1b9c4905c7b6a0 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 15 Sep 2025 17:50:55 +0300 Subject: [PATCH 100/131] =?UTF-8?q?lesson=2037,=20task=202,=20=D0=B5=D1=89?= =?UTF-8?q?=D1=91=20=D1=82=D1=80=D0=B8=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=D0=B0...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson37_collection_list/task2/Main.java | 19 +++ .../task2/collection/MyCollection.java | 145 ++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java diff --git a/src/com/walking/lesson37_collection_list/task2/Main.java b/src/com/walking/lesson37_collection_list/task2/Main.java index 51a4575bb..960650e9c 100644 --- a/src/com/walking/lesson37_collection_list/task2/Main.java +++ b/src/com/walking/lesson37_collection_list/task2/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson37_collection_list.task2; +import com.walking.lesson37_collection_list.task2.collection.MyCollection; + +import java.util.ArrayList; +import java.util.Arrays; + /** * Попробуйте реализовать собственную коллекцию, наследуясь от Collection. * За основу можно взять @@ -10,5 +15,19 @@ */ public class Main { public static void main(String[] args) { + + MyCollection col1 = new MyCollection<>(34); + col1.add("love"); + System.out.println(Arrays.toString(col1.toArray())); + + MyCollection col2 = new MyCollection<>("45"); + col2.add("hello"); + System.out.println(Arrays.toString(col2.toArray())); + col1.addAll(col2); + System.out.println(Arrays.toString(col1.toArray())); + System.out.println(col1.size()); + col2.clear(); + System.out.println(Arrays.toString(col2.toArray())); + } } diff --git a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java new file mode 100644 index 000000000..588e4fba5 --- /dev/null +++ b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java @@ -0,0 +1,145 @@ +package com.walking.lesson37_collection_list.task2.collection; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; + +public class MyCollection implements Collection { + public Object[] elements; + private int size; + + + public MyCollection() { + elements = new Object[]{}; + } + + public MyCollection(E el) { + elements = new Object[]{el}; + size++; + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + @Override + public boolean contains(Object o) { + for (Object object : elements) { + if (o.equals(object)) { + return true; + } + } + return false; + } + + @Override + public Iterator iterator() { + return null; + } + + @Override + public Object[] toArray() { + return Arrays.copyOf(elements, size); + } + + @Override + public boolean add(E el) { + size++; + elements = Arrays.copyOf(elements, size); + elements[size - 1] = el; + return true; + } + + public boolean remove() { + return removeByIndex(size - 1); + } + + @Override + public boolean remove(Object o) { + return removeByIndex(getIndex(o)); + } + + public boolean removeByIndex(int index) { + if (index < 0 || index >= size) { + return false; + } + + size--; + Object[] newElements = new Object[size]; + for (int i = 0; i < size; i++) { + if (i < index) { + newElements[i] = elements[i]; + } + + if (i > index) { + newElements[i - 1] = elements[i]; + } + } + elements = newElements; + return true; + } + + public int getIndex(Object o) { + for (int i = 0; i < size; i++) { + if (o.equals(elements[i])) { + return i; + } + } + return -1; + } + + @Override + public boolean addAll(Collection c) { + Object[] objects = c.toArray(); + int addLength = objects.length; + if (addLength == 0) { + return false; + } + + size += addLength; + Object[] newElements = new Object[size]; + int indexOb = 0; + for (int i = 0; i < size; i++) { + if (i < elements.length) { + newElements[i] = elements[i]; + } else { + newElements[i] = objects[indexOb]; + indexOb++; + } + } + elements = newElements; + return true; + } + + @Override + public void clear() { + size = 0; + elements = new Object[0]; + } + + @Override + public boolean retainAll(Collection c) { + return false; + } + + @Override + public boolean removeAll(Collection c) { + return false; + } + + @Override + public boolean containsAll(Collection c) { + return false; + } + + @Override + public Object[] toArray(Object[] a) { + return a; + } +} From d4067378ac9df841a9acae2caffda5333336151e Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 16 Sep 2025 15:54:36 +0300 Subject: [PATCH 101/131] =?UTF-8?q?lesson=2037,=20task=202,=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson37_collection_list/task2/Main.java | 22 ++- .../task2/collection/MyCollection.java | 147 +++++++++++------- 2 files changed, 98 insertions(+), 71 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task2/Main.java b/src/com/walking/lesson37_collection_list/task2/Main.java index 960650e9c..a36c680db 100644 --- a/src/com/walking/lesson37_collection_list/task2/Main.java +++ b/src/com/walking/lesson37_collection_list/task2/Main.java @@ -2,7 +2,6 @@ import com.walking.lesson37_collection_list.task2.collection.MyCollection; -import java.util.ArrayList; import java.util.Arrays; /** @@ -15,19 +14,16 @@ */ public class Main { public static void main(String[] args) { + MyCollection strings = new MyCollection<>(); + strings.add("hello"); + strings.add("how"); + strings.add("are"); + strings.add("you"); - MyCollection col1 = new MyCollection<>(34); - col1.add("love"); - System.out.println(Arrays.toString(col1.toArray())); - - MyCollection col2 = new MyCollection<>("45"); - col2.add("hello"); - System.out.println(Arrays.toString(col2.toArray())); - col1.addAll(col2); - System.out.println(Arrays.toString(col1.toArray())); - System.out.println(col1.size()); - col2.clear(); - System.out.println(Arrays.toString(col2.toArray())); + System.out.println(Arrays.toString(strings.toArray())); + MyCollection col2 = new MyCollection<>("how"); + strings.retainAll(col2); + System.out.println(Arrays.toString(strings.toArray())); } } diff --git a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java index 588e4fba5..2c989f30f 100644 --- a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java +++ b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java @@ -1,20 +1,17 @@ package com.walking.lesson37_collection_list.task2.collection; -import java.util.Arrays; import java.util.Collection; import java.util.Iterator; public class MyCollection implements Collection { - public Object[] elements; + private Element top; private int size; - public MyCollection() { - elements = new Object[]{}; } - public MyCollection(E el) { - elements = new Object[]{el}; + public MyCollection(E top) { + this.top = new Element<>(top); size++; } @@ -30,10 +27,13 @@ public boolean isEmpty() { @Override public boolean contains(Object o) { - for (Object object : elements) { - if (o.equals(object)) { + Element el = top; + + while (el != null) { + if (o.equals(el.value)) { return true; } + el = el.previous; } return false; } @@ -45,101 +45,132 @@ public Iterator iterator() { @Override public Object[] toArray() { - return Arrays.copyOf(elements, size); + Object[] elements = new Object[size]; + Element lastElement = top; + for (int i = size - 1; i >= 0; i--) { + elements[i] = lastElement.value; + lastElement = lastElement.previous; + } + + return elements; } @Override public boolean add(E el) { + Element newTop = new Element<>(top, el); size++; - elements = Arrays.copyOf(elements, size); - elements[size - 1] = el; + top = newTop; return true; } - public boolean remove() { - return removeByIndex(size - 1); - } - @Override public boolean remove(Object o) { - return removeByIndex(getIndex(o)); - } - - public boolean removeByIndex(int index) { - if (index < 0 || index >= size) { + if (isEmpty()) { return false; } - size--; - Object[] newElements = new Object[size]; - for (int i = 0; i < size; i++) { - if (i < index) { - newElements[i] = elements[i]; - } - - if (i > index) { - newElements[i - 1] = elements[i]; - } + if (o.equals(top)) { + top = top.previous; + size--; + return true; } - elements = newElements; - return true; - } - public int getIndex(Object o) { - for (int i = 0; i < size; i++) { - if (o.equals(elements[i])) { - return i; + Element el = top; + int i = 1; + while (i < size) { + if (o.equals(el.previous.value)) { + el.previous = el.previous.previous; + size--; + return true; } + el = el.previous; + i++; } - return -1; + return false; } @Override public boolean addAll(Collection c) { - Object[] objects = c.toArray(); - int addLength = objects.length; - if (addLength == 0) { + if (c.isEmpty()) { return false; } - size += addLength; - Object[] newElements = new Object[size]; - int indexOb = 0; - for (int i = 0; i < size; i++) { - if (i < elements.length) { - newElements[i] = elements[i]; - } else { - newElements[i] = objects[indexOb]; - indexOb++; - } + for (E e : c) { + add(e); } - elements = newElements; return true; } @Override public void clear() { size = 0; - elements = new Object[0]; + top = null; } @Override - public boolean retainAll(Collection c) { - return false; + public boolean retainAll(Collection c) { + if (c.isEmpty()) { + return false; + } + + while (!c.contains(top.value)) { + top = top.previous; + size--; + } + + Element el = top; + while (el != null) { + if (!c.contains(el.previous.value)) { + el.previous = el.previous.previous; + size--; + } + el = el.previous; + } + + return size > 0; } @Override - public boolean removeAll(Collection c) { - return false; + public boolean removeAll(Collection c) { + if (c.isEmpty()) { + return false; + } + + boolean isRemoved = false; + for (Object e : c) { + if (remove(e)) { + isRemoved = true; + } + } + return isRemoved; } @Override public boolean containsAll(Collection c) { - return false; + for (Object o : c) { + if(!contains(o)) { + return false; + } + } + return true; } @Override public Object[] toArray(Object[] a) { return a; } + + private static class Element { + private final E value; + private Element previous; + + private Element(E top) { + this.value = top; + } + + private Element(Element previous, E top) { + this.value = top; + this.previous = previous; + } + } } From 38caaf830f9177c9527181fb95a8e7288cd8b93f Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 16 Sep 2025 15:58:58 +0300 Subject: [PATCH 102/131] =?UTF-8?q?lesson=2037,=20task=202,=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson37_collection_list/task2/Main.java | 4 ++-- .../task2/collection/MyCollection.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task2/Main.java b/src/com/walking/lesson37_collection_list/task2/Main.java index a36c680db..ff0d73d8a 100644 --- a/src/com/walking/lesson37_collection_list/task2/Main.java +++ b/src/com/walking/lesson37_collection_list/task2/Main.java @@ -22,8 +22,8 @@ public static void main(String[] args) { System.out.println(Arrays.toString(strings.toArray())); - MyCollection col2 = new MyCollection<>("how"); - strings.retainAll(col2); + MyCollection col2 = new MyCollection<>("lol"); + System.out.println(strings.retainAll(col2)); System.out.println(Arrays.toString(strings.toArray())); } } diff --git a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java index 2c989f30f..f876d4d3d 100644 --- a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java +++ b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java @@ -38,11 +38,6 @@ public boolean contains(Object o) { return false; } - @Override - public Iterator iterator() { - return null; - } - @Override public Object[] toArray() { Object[] elements = new Object[size]; @@ -113,7 +108,7 @@ public boolean retainAll(Collection c) { return false; } - while (!c.contains(top.value)) { + while (top != null && !c.contains(top.value)) { top = top.previous; size--; } @@ -160,6 +155,11 @@ public Object[] toArray(Object[] a) { return a; } + @Override + public Iterator iterator() { + return null; + } + private static class Element { private final E value; private Element previous; From f5d11ff8e761dae555097d5aa48af79583b490a9 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 16 Sep 2025 16:36:55 +0300 Subject: [PATCH 103/131] =?UTF-8?q?lesson=2037,=20task=202,=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson37_collection_list/task2/Main.java | 9 +++++++-- .../task2/collection/MyCollection.java | 10 +++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task2/Main.java b/src/com/walking/lesson37_collection_list/task2/Main.java index ff0d73d8a..1cf402208 100644 --- a/src/com/walking/lesson37_collection_list/task2/Main.java +++ b/src/com/walking/lesson37_collection_list/task2/Main.java @@ -2,7 +2,9 @@ import com.walking.lesson37_collection_list.task2.collection.MyCollection; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * Попробуйте реализовать собственную коллекцию, наследуясь от Collection. @@ -22,8 +24,11 @@ public static void main(String[] args) { System.out.println(Arrays.toString(strings.toArray())); - MyCollection col2 = new MyCollection<>("lol"); - System.out.println(strings.retainAll(col2)); + ArrayList arrayList = new ArrayList<>(List.of("I", "know", "why")); + strings.addAll(arrayList); System.out.println(Arrays.toString(strings.toArray())); + System.out.println(strings.containsAll(arrayList)); + System.out.println(Arrays.toString(strings.toArray())); + System.out.println(strings.size()); } } diff --git a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java index f876d4d3d..7b596e8dd 100644 --- a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java +++ b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java @@ -52,9 +52,8 @@ public Object[] toArray() { @Override public boolean add(E el) { - Element newTop = new Element<>(top, el); + top = new Element<>(top, el); size++; - top = newTop; return true; } @@ -64,7 +63,7 @@ public boolean remove(Object o) { return false; } - if (o.equals(top)) { + if (o.equals(top.value)) { top = top.previous; size--; return true; @@ -114,12 +113,13 @@ public boolean retainAll(Collection c) { } Element el = top; - while (el != null) { + while (el.previous != null) { if (!c.contains(el.previous.value)) { el.previous = el.previous.previous; size--; + } else { + el = el.previous; } - el = el.previous; } return size > 0; From eeb0e7f2320bef575a628a8aa9bd2073444df819 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 22 Sep 2025 14:40:26 +0300 Subject: [PATCH 104/131] =?UTF-8?q?lesson=2038,=20task=201,=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson38_comparing/task1/Main.java | 62 +++++++++++++++++++ .../lesson38_comparing/task1/model/Car.java | 50 +++++++++++++++ .../task1/model/CarIdentifier.java | 47 ++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 src/com/walking/lesson38_comparing/task1/model/Car.java create mode 100644 src/com/walking/lesson38_comparing/task1/model/CarIdentifier.java diff --git a/src/com/walking/lesson38_comparing/task1/Main.java b/src/com/walking/lesson38_comparing/task1/Main.java index 230a6e319..e65a7b0b2 100644 --- a/src/com/walking/lesson38_comparing/task1/Main.java +++ b/src/com/walking/lesson38_comparing/task1/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson38_comparing.task1; +import com.walking.lesson38_comparing.task1.model.*; + +import java.util.*; + /** * Используя классы-сущности из задачи * ... @@ -13,5 +17,63 @@ */ public class Main { public static void main(String[] args) { + ArrayList cars = new ArrayList<>(createList()); + sortByIdentifier(cars); + for (Car car : cars) { + System.out.println(car.toString()); + } + } + + public static void sortByOwner(List cars) { + cars.sort(new Comparator() { + @Override + public int compare(Car o1, Car o2) { + return o1.getOwner().compareTo(o2.getOwner()); + } + }); + } + + public static void sortByNumber(List cars) { + cars.sort(new Comparator() { + @Override + public int compare(Car o1, Car o2) { + return o1.getIdentifier().getNumber().compareTo(o2.getIdentifier().getNumber()); + } + }); + } + + public static void sortByBrand(List cars) { + cars.sort(new Comparator() { + @Override + public int compare(Car o1, Car o2) { + return o1.getIdentifier().getBrand().compareTo(o2.getIdentifier().getBrand()); + } + }); + } + + public static void sortByIdentifier(List cars) { + cars.sort(new Comparator() { + @Override + public int compare(Car o1, Car o2) { + int result = o1.getIdentifier().getBrand().compareTo(o2.getIdentifier().getBrand()); + if (result == 0) { + return o1.getIdentifier().getNumber().compareTo(o2.getIdentifier().getNumber()); + } + return result; + } + }); + } + + public static List createList() { + return List.of( + new Car("Audi", "Печкин Ф.Б.", "уе777к"), + new Car("BMW", "Борисов Ю.А.", "ос025р"), + new Car("Ford", "Снегирь Ю.В.", "мр666м"), + new Car("Bentley", "Белова Д.М.", "ра345з"), + new Car("Ferrari", "Сергеев К.Л.", "уе999з"), + new Car("Москвич", "Попов А.Д.", "ар832с"), + new Car("Audi", "Васильев П.Д.", "кв865а"), + new Car("BMW", "Лебедев А.Ю.", "ау000ш"), + new Car("Москвич", "Алексеев Л.Б.", "гн123г")); } } diff --git a/src/com/walking/lesson38_comparing/task1/model/Car.java b/src/com/walking/lesson38_comparing/task1/model/Car.java new file mode 100644 index 000000000..7db2201df --- /dev/null +++ b/src/com/walking/lesson38_comparing/task1/model/Car.java @@ -0,0 +1,50 @@ +package com.walking.lesson38_comparing.task1.model; + +public class Car { + private final CarIdentifier identifier; + private String owner; + + public Car(String brand, String owner, String number) { + this.identifier = new CarIdentifier(brand, number); + this.owner = owner; + } + + public Car(CarIdentifier identifier) { + this.identifier = identifier; + } + + @Override + public String toString() { + return identifier.getBrand() + ", " + owner + ", " + identifier.getNumber(); + } + + public CarIdentifier getIdentifier() { + return identifier; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + Car c = (Car) car; + + return identifier.equals(c.identifier); + } +} diff --git a/src/com/walking/lesson38_comparing/task1/model/CarIdentifier.java b/src/com/walking/lesson38_comparing/task1/model/CarIdentifier.java new file mode 100644 index 000000000..3f1e18301 --- /dev/null +++ b/src/com/walking/lesson38_comparing/task1/model/CarIdentifier.java @@ -0,0 +1,47 @@ +package com.walking.lesson38_comparing.task1.model; + +public final class CarIdentifier { + private final String brand; + private final String number; + + public CarIdentifier(String brand, String number) { + this.brand = brand; + this.number = number; + } + + @Override + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + CarIdentifier c = (CarIdentifier) car; + + return number.equals(c.number) && brand.equals(c.brand); + } + + @Override + public int hashCode() { + int result = brand != null ? brand.hashCode() : 0; + result *= 31 + (number != null ? number.hashCode() : 0); + + return result; + } + + public String getBrand() { + return brand; + } + + public String getNumber() { + return number; + } + +} From f8585d4a6eed0195d461a9bd8bddeeb0e1cd4468 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 24 Sep 2025 12:45:09 +0300 Subject: [PATCH 105/131] =?UTF-8?q?lesson=2038,=20task=202,=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson38_comparing/task1/Main.java | 10 +++- .../lesson38_comparing/task2/Main.java | 28 ++++++++++ .../lesson38_comparing/task2/model/Car.java | 55 +++++++++++++++++++ .../task2/model/CarIdentifier.java | 55 +++++++++++++++++++ 4 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 src/com/walking/lesson38_comparing/task2/model/Car.java create mode 100644 src/com/walking/lesson38_comparing/task2/model/CarIdentifier.java diff --git a/src/com/walking/lesson38_comparing/task1/Main.java b/src/com/walking/lesson38_comparing/task1/Main.java index e65a7b0b2..597bdfb1c 100644 --- a/src/com/walking/lesson38_comparing/task1/Main.java +++ b/src/com/walking/lesson38_comparing/task1/Main.java @@ -19,9 +19,7 @@ public class Main { public static void main(String[] args) { ArrayList cars = new ArrayList<>(createList()); sortByIdentifier(cars); - for (Car car : cars) { - System.out.println(car.toString()); - } + printList(cars); } public static void sortByOwner(List cars) { @@ -76,4 +74,10 @@ public static List createList() { new Car("BMW", "Лебедев А.Ю.", "ау000ш"), new Car("Москвич", "Алексеев Л.Б.", "гн123г")); } + + public static void printList(List cars) { + for (Car car : cars) { + System.out.println(car); + } + } } diff --git a/src/com/walking/lesson38_comparing/task2/Main.java b/src/com/walking/lesson38_comparing/task2/Main.java index def3f23b9..6666245b1 100644 --- a/src/com/walking/lesson38_comparing/task2/Main.java +++ b/src/com/walking/lesson38_comparing/task2/Main.java @@ -1,5 +1,11 @@ package com.walking.lesson38_comparing.task2; +import com.walking.lesson38_comparing.task2.model.Car; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + /** * Используя классы-сущности из задачи * ..., @@ -11,5 +17,27 @@ */ public class Main { public static void main(String[] args) { + List cars = createList(); + cars.sort(Comparator.naturalOrder()); + printList(cars); + } + + public static ArrayList createList() { + return new ArrayList<>(List.of( + new Car("Audi", "Печкин Ф.Б.", "уе777к"), + new Car("BMW", "Борисов Ю.А.", "ос025р"), + new Car("Ford", "Снегирь Ю.В.", "мр666м"), + new Car("Bentley", "Белова Д.М.", "ра345з"), + new Car("Ferrari", "Сергеев К.Л.", "уе999з"), + new Car("Москвич", "Попов А.Д.", "ар832с"), + new Car("Audi", "Васильев П.Д.", "кв865а"), + new Car("BMW", "Лебедев А.Ю.", "ау000ш"), + new Car("Москвич", "Алексеев Л.Б.", "гн123г"))); + } + + public static void printList(List cars) { + for (Car car : cars) { + System.out.println(car); + } } } diff --git a/src/com/walking/lesson38_comparing/task2/model/Car.java b/src/com/walking/lesson38_comparing/task2/model/Car.java new file mode 100644 index 000000000..49f9416dc --- /dev/null +++ b/src/com/walking/lesson38_comparing/task2/model/Car.java @@ -0,0 +1,55 @@ +package com.walking.lesson38_comparing.task2.model; + +public class Car implements Comparable { + private final CarIdentifier identifier; + private String owner; + + public Car(String brand, String owner, String number) { + this.identifier = new CarIdentifier(brand, number); + this.owner = owner; + } + + public Car(CarIdentifier identifier) { + this.identifier = identifier; + } + + @Override + public String toString() { + return identifier.getBrand() + ", " + owner + ", " + identifier.getNumber(); + } + + public CarIdentifier getIdentifier() { + return identifier; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + Car c = (Car) car; + + return identifier.equals(c.identifier); + } + + @Override + public int compareTo(Car o) { + return identifier.compareTo(o.identifier); + } +} diff --git a/src/com/walking/lesson38_comparing/task2/model/CarIdentifier.java b/src/com/walking/lesson38_comparing/task2/model/CarIdentifier.java new file mode 100644 index 000000000..4e8a1db6a --- /dev/null +++ b/src/com/walking/lesson38_comparing/task2/model/CarIdentifier.java @@ -0,0 +1,55 @@ +package com.walking.lesson38_comparing.task2.model; + +public final class CarIdentifier implements Comparable { + private final String brand; + private final String number; + + public CarIdentifier(String brand, String number) { + this.brand = brand; + this.number = number; + } + + @Override + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + CarIdentifier c = (CarIdentifier) car; + + return number.equals(c.number) && brand.equals(c.brand); + } + + @Override + public int hashCode() { + int result = brand != null ? brand.hashCode() : 0; + result *= 31 + (number != null ? number.hashCode() : 0); + + return result; + } + + public String getBrand() { + return brand; + } + + public String getNumber() { + return number; + } + + @Override + public int compareTo(CarIdentifier o) { + int result = brand.compareTo(o.brand); + if (result == 0) { + result = number.compareTo(o.number); + } + return result; + } +} From d2b49063f3b07913c3068f82bfacac2a9bdb8bb3 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 29 Sep 2025 11:52:32 +0300 Subject: [PATCH 106/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task3/repository/CarRepository.java | 12 ++---- .../task3/service/CarService.java | 4 +- .../lesson37_collection_list/task1/Main.java | 2 +- .../task1/model/Counter.java | 18 ++++----- .../task1/service/CounterService.java | 25 +++++------- .../lesson37_collection_list/task2/Main.java | 1 + .../task2/collection/MyCollection.java | 12 +++--- .../lesson38_comparing/task1/Main.java | 40 +++++++++++++------ 8 files changed, 59 insertions(+), 55 deletions(-) diff --git a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java index 4998c135b..315cc4def 100644 --- a/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java +++ b/src/com/walking/lesson32_files_1/task3/repository/CarRepository.java @@ -35,7 +35,7 @@ public void findAll() throws IOException { this.carsArr = arr; } - public Car[] deleteCar(int index) { + public void deleteCar(int index) { int length = carsArr.length; Car[] updatedCars = new Car[length - 1]; for (int i = 0; i < length; i++) { @@ -47,27 +47,23 @@ public Car[] deleteCar(int index) { updatedCars[i - 1] = carsArr[i]; } } - return updatedCars; + this.carsArr = updatedCars; } /** ты только про удаление написал, но я подумала, будет логично по аналогии сделать метод и с добавлением машины. * если, конечно, я правильно поняла, какую логику сюда перенести надо было ахаха */ - public Car[] addCar(Car car) { + public void addCar(Car car) { int length = carsArr.length; Car[] updatedCars = Arrays.copyOf(carsArr, length + 1); updatedCars[length] = car; - return updatedCars; + this.carsArr = updatedCars; } public Car[] getCarsArr() { return Arrays.copyOf(carsArr, carsArr.length); } - public void setCarsArr(Car[] carsArr) { - this.carsArr = carsArr; - } - private String readFile() throws IOException { StringBuilder cars = new StringBuilder(); try (FileReader reader = new FileReader(FILE_LOCATION)) { diff --git a/src/com/walking/lesson32_files_1/task3/service/CarService.java b/src/com/walking/lesson32_files_1/task3/service/CarService.java index 64bac1813..5933b4dad 100644 --- a/src/com/walking/lesson32_files_1/task3/service/CarService.java +++ b/src/com/walking/lesson32_files_1/task3/service/CarService.java @@ -15,7 +15,7 @@ public void add(Car car) { return; } - repository.setCarsArr(repository.addCar(car)); + repository.addCar(car); System.out.println("Машина добавлена."); } @@ -38,7 +38,7 @@ public void delete(Car car) { return; } - repository.setCarsArr(repository.deleteCar(index)); + repository.deleteCar(index); System.out.println("Машина удалена."); } diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java index 166b39b9a..4e36e5667 100644 --- a/src/com/walking/lesson37_collection_list/task1/Main.java +++ b/src/com/walking/lesson37_collection_list/task1/Main.java @@ -41,7 +41,7 @@ public static void main(String[] args) { public static void printCounterValues(CounterService counterService) { for(Counter counter : counterService.getCounters()) { - counter.getInfo(); + System.out.println(counter.getInfo()); } } } diff --git a/src/com/walking/lesson37_collection_list/task1/model/Counter.java b/src/com/walking/lesson37_collection_list/task1/model/Counter.java index 1f82cc0fa..81462f4ca 100644 --- a/src/com/walking/lesson37_collection_list/task1/model/Counter.java +++ b/src/com/walking/lesson37_collection_list/task1/model/Counter.java @@ -1,8 +1,8 @@ package com.walking.lesson37_collection_list.task1.model; public class Counter { - private final String NAME; - private final String UNIT; + private final String name; + private final String unit; private int value; @@ -11,17 +11,17 @@ public Counter(String NAME, String UNIT) { } public Counter(String NAME, String UNIT, int value) { - this.NAME = NAME; - this.UNIT = UNIT; + this.name = NAME; + this.unit = UNIT; this.value = value; } public String getNAME() { - return NAME; + return name; } - public String getUNIT() { - return UNIT; + public String getUnit() { + return unit; } public int getValue() { @@ -32,7 +32,7 @@ public void setValue(int value) { this.value = value; } - public void getInfo() { - System.out.printf("%s: %d %s%n", NAME, value, UNIT); + public String getInfo() { + return "%s: %d %s%n".formatted(name, value, unit); } } diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 46c160af8..a147c70c0 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -6,7 +6,7 @@ import java.util.List; public class CounterService { - private final ArrayList counters; + private final List counters; public CounterService(Counter... counters) { this.counters = new ArrayList<>(List.of(counters)); @@ -35,26 +35,19 @@ public void add(Counter counter) { System.out.printf("Счётчик с названием '%s' уже существует.\n", counter.getNAME()); return; } + counters.add(counter); + System.out.printf("Счётчик '%s' добавлен.\n", counter.getNAME()); - if (counters.add(counter)) { - System.out.printf("Счётчик '%s' добавлен.\n", counter.getNAME()); - counters.trimToSize(); - } else { - System.out.println("Добавить счётчик не удалось."); - } } public void delete(Counter counter) { - if (counters.remove(counter)) { - System.out.printf("Счётчик '%s' удалён.\n", counter.getNAME()); - counters.trimToSize(); - } else { - System.out.println("Удалить счётчик не удалось."); - } + counters.remove(counter); + System.out.printf("Счётчик '%s' удалён.\n", counter.getNAME()); + } public void increaseValue(Counter counter, int value) { - if(counter == null) { + if (isNull(counter)) { System.out.println("Обновить данные счётчика не удалось."); return; } @@ -84,8 +77,8 @@ public void resetValue(String name) { resetValue(getByName(name)); } - public ArrayList getCounters() { - return new ArrayList<>(counters); + public List getCounters() { + return List.copyOf(counters); } private boolean isContains(Counter counter) { diff --git a/src/com/walking/lesson37_collection_list/task2/Main.java b/src/com/walking/lesson37_collection_list/task2/Main.java index 1cf402208..5505c6b85 100644 --- a/src/com/walking/lesson37_collection_list/task2/Main.java +++ b/src/com/walking/lesson37_collection_list/task2/Main.java @@ -28,6 +28,7 @@ public static void main(String[] args) { strings.addAll(arrayList); System.out.println(Arrays.toString(strings.toArray())); System.out.println(strings.containsAll(arrayList)); + strings.remove("hello"); System.out.println(Arrays.toString(strings.toArray())); System.out.println(strings.size()); } diff --git a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java index 7b596e8dd..8e4dec0e0 100644 --- a/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java +++ b/src/com/walking/lesson37_collection_list/task2/collection/MyCollection.java @@ -70,15 +70,13 @@ public boolean remove(Object o) { } Element el = top; - int i = 1; - while (i < size) { + while (el.previous != null) { if (o.equals(el.previous.value)) { el.previous = el.previous.previous; size--; return true; } el = el.previous; - i++; } return false; } @@ -164,12 +162,12 @@ private static class Element { private final E value; private Element previous; - private Element(E top) { - this.value = top; + private Element(E value) { + this.value = value; } - private Element(Element previous, E top) { - this.value = top; + private Element(Element previous, E value) { + this.value = value; this.previous = previous; } } diff --git a/src/com/walking/lesson38_comparing/task1/Main.java b/src/com/walking/lesson38_comparing/task1/Main.java index 597bdfb1c..a97f5a1cd 100644 --- a/src/com/walking/lesson38_comparing/task1/Main.java +++ b/src/com/walking/lesson38_comparing/task1/Main.java @@ -23,43 +23,59 @@ public static void main(String[] args) { } public static void sortByOwner(List cars) { - cars.sort(new Comparator() { + Comparator comparator = new Comparator() { @Override public int compare(Car o1, Car o2) { return o1.getOwner().compareTo(o2.getOwner()); } - }); + }; + + cars.sort(comparator); } public static void sortByNumber(List cars) { - cars.sort(new Comparator() { + Comparator comparator = new Comparator() { @Override public int compare(Car o1, Car o2) { - return o1.getIdentifier().getNumber().compareTo(o2.getIdentifier().getNumber()); + return o1.getIdentifier() + .getNumber() + .compareTo(o2.getIdentifier().getNumber()); } - }); + }; + + cars.sort(comparator); } public static void sortByBrand(List cars) { - cars.sort(new Comparator() { + Comparator comparator = new Comparator() { @Override public int compare(Car o1, Car o2) { - return o1.getIdentifier().getBrand().compareTo(o2.getIdentifier().getBrand()); + return o1.getIdentifier() + .getBrand() + .compareTo(o2.getIdentifier().getBrand()); } - }); + }; + + cars.sort(comparator); } public static void sortByIdentifier(List cars) { - cars.sort(new Comparator() { + Comparator comparator = new Comparator() { @Override public int compare(Car o1, Car o2) { - int result = o1.getIdentifier().getBrand().compareTo(o2.getIdentifier().getBrand()); + int result = o1.getIdentifier() + .getBrand() + .compareTo(o2.getIdentifier().getBrand()); if (result == 0) { - return o1.getIdentifier().getNumber().compareTo(o2.getIdentifier().getNumber()); + return o1.getIdentifier() + .getNumber() + .compareTo(o2.getIdentifier().getNumber()); } return result; } - }); + }; + + cars.sort(comparator); } public static List createList() { From 498141d2c8268758e3b92fbbae167b087cea8df2 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 1 Oct 2025 15:39:01 +0300 Subject: [PATCH 107/131] lesson 39, task 1 --- .../walking/lesson39_queue1/task1/Main.java | 13 ++ .../exception/ElementNotFoundException.java | 7 + .../lesson39_queue1/task1/list/MyList.java | 131 ++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java create mode 100644 src/com/walking/lesson39_queue1/task1/list/MyList.java diff --git a/src/com/walking/lesson39_queue1/task1/Main.java b/src/com/walking/lesson39_queue1/task1/Main.java index a19c5ee93..e542368b7 100644 --- a/src/com/walking/lesson39_queue1/task1/Main.java +++ b/src/com/walking/lesson39_queue1/task1/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson39_queue1.task1; +import com.walking.lesson39_queue1.task1.list.MyList; + /** * Реализуйте односвязный список (можно использовать реализацию в рамках * ...). @@ -11,5 +13,16 @@ */ public class Main { public static void main(String[] args) { + MyList newList = new MyList<>("1"); + newList.add("2"); + newList.add("3"); + newList.add("4"); + + System.out.println(newList); + newList.reverse(); + System.out.println(newList); + newList.removeEvenHashCodes(); + System.out.println(newList.getSize()); + System.out.println(newList); } } diff --git a/src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java b/src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java new file mode 100644 index 000000000..a23122347 --- /dev/null +++ b/src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java @@ -0,0 +1,7 @@ +package com.walking.lesson39_queue1.task1.exception; + +public class ElementNotFoundException extends RuntimeException { + public ElementNotFoundException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson39_queue1/task1/list/MyList.java b/src/com/walking/lesson39_queue1/task1/list/MyList.java new file mode 100644 index 000000000..9ee085e65 --- /dev/null +++ b/src/com/walking/lesson39_queue1/task1/list/MyList.java @@ -0,0 +1,131 @@ +package com.walking.lesson39_queue1.task1.list; + +import com.walking.lesson39_queue1.task1.exception.ElementNotFoundException; + +import java.util.Objects; + +public class MyList { + private Element tail; + int size; + + public MyList() { + } + + public MyList(E top) { + this.tail = new Element<>(top); + size++; + } + + public int getSize() { + return size; + } + + public boolean isEmpty() { + return size == 0; + } + + public Object find(Object o) { + Element el = tail; + + while (el != null) { + if (o.equals(el.value)) { + return el.value; + } + el = el.previous; + } + throw new ElementNotFoundException("Элемент не найден."); + } + + public boolean add(E el) { + tail = new Element<>(tail, el); + size++; + return true; + } + + public boolean remove(Object o) { + if (isEmpty()) { + return false; + } + + if (o.equals(tail.value)) { + tail = tail.previous; + size--; + return true; + } + + Element el = tail; + while (el.previous != null) { + if (o.equals(el.previous.value)) { + el.previous = el.previous.previous; + size--; + return true; + } + el = el.previous; + } + return false; + } + + public String toString() { + StringBuilder allElements = new StringBuilder(); + Element el = tail; + + while (el != null) { + allElements.append(el.value); + if (el.previous != null) { + allElements.append(", "); + } + el = el.previous; + } + return allElements.toString(); + } + + public void reverse() { + Element prev = null; + Element top = tail; + + while (top != null) { + Element newTail = top.previous; + top.previous = prev; + prev = top; + top = newTail; + } + + tail = prev; + } + + public void removeEvenHashCodes() { + while (!isEmpty() && tail.hashCode() % 2 == 0) { + tail = tail.previous; + size--; + } + + Element current = tail; + while (current.previous != null) { + if (current.previous.hashCode() % 2 == 0) { + current.previous = current.previous.previous; + size--; + } else { + current = current.previous; + } + } + } + + private static class Element { + private final E value; + private Element previous; + + private Element(E value) { + this.value = value; + } + + private Element(Element previous, E value) { + this.value = value; + this.previous = previous; + } + + @Override + public int hashCode() { + return Objects.hash(value, previous); + } + } +} From 78aa43754004b12e284e0b7ec94a6793ccf6aed6 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 2 Oct 2025 13:08:50 +0300 Subject: [PATCH 108/131] lesson 39, task 2 --- .../lesson39_queue1/task1/list/MyList.java | 4 +++ .../walking/lesson39_queue1/task2/Main.java | 12 ++++++++ .../lesson39_queue1/task2/stack/MyStack.java | 29 +++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 src/com/walking/lesson39_queue1/task2/stack/MyStack.java diff --git a/src/com/walking/lesson39_queue1/task1/list/MyList.java b/src/com/walking/lesson39_queue1/task1/list/MyList.java index 9ee085e65..7bdab5d69 100644 --- a/src/com/walking/lesson39_queue1/task1/list/MyList.java +++ b/src/com/walking/lesson39_queue1/task1/list/MyList.java @@ -110,6 +110,10 @@ public void removeEvenHashCodes() { } } + public Object getTailValue() { + return tail.value; + } + private static class Element { private final E value; private Element previous; diff --git a/src/com/walking/lesson39_queue1/task2/Main.java b/src/com/walking/lesson39_queue1/task2/Main.java index e4aa01a2a..5843a12de 100644 --- a/src/com/walking/lesson39_queue1/task2/Main.java +++ b/src/com/walking/lesson39_queue1/task2/Main.java @@ -1,10 +1,22 @@ package com.walking.lesson39_queue1.task2; +import com.walking.lesson39_queue1.task2.stack.MyStack; + /** * Реализуйте структуру данных стек. Используйте односвязный список из Задачи 1. * При этом изменять сам класс, реализующий односвязный список, недопустимо. */ public class Main { public static void main(String[] args) { + MyStack nums = new MyStack<>(12); + nums.push(23); + nums.push(34); + nums.push(42); + nums.push(28); + + System.out.println(nums.peek()); + System.out.println(nums.pop()); + System.out.println(nums.pop()); + System.out.println(nums.pop()); } } diff --git a/src/com/walking/lesson39_queue1/task2/stack/MyStack.java b/src/com/walking/lesson39_queue1/task2/stack/MyStack.java new file mode 100644 index 000000000..7d5ff9ffc --- /dev/null +++ b/src/com/walking/lesson39_queue1/task2/stack/MyStack.java @@ -0,0 +1,29 @@ +package com.walking.lesson39_queue1.task2.stack; + +import com.walking.lesson39_queue1.task1.list.MyList; + +public class MyStack { + private final MyList list; + + public MyStack(E el) { + this.list = new MyList<>(el); + } + + public MyStack() { + this.list = new MyList<>(); + } + + public Object peek() { + return list.getTailValue(); + } + + public void push(E el) { + list.add(el); + } + + public Object pop() { + Object del = list.getTailValue(); + list.remove(del); + return del; + } +} From df675a8bb8a94d80b36efa31a501a3a006b9d747 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 7 Oct 2025 15:06:44 +0300 Subject: [PATCH 109/131] =?UTF-8?q?lesson=2039,=20=D0=B2=D1=81=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson39_queue1/task1/Main.java | 2 +- .../exception/ElementNotFoundException.java | 7 - .../task1/exception/ListIsEmptyException.java | 7 + .../lesson39_queue1/task1/list/MyList.java | 53 ++--- .../walking/lesson39_queue1/task3/Main.java | 14 ++ .../task3/exception/ListIsEmptyException.java | 7 + .../task3/list/MyDoublyLinkedList.java | 204 ++++++++++++++++++ .../walking/lesson39_queue1/task4/Main.java | 9 + .../lesson39_queue1/task4/queue/MyQueue.java | 25 +++ 9 files changed, 288 insertions(+), 40 deletions(-) delete mode 100644 src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java create mode 100644 src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java create mode 100644 src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java create mode 100644 src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java create mode 100644 src/com/walking/lesson39_queue1/task4/queue/MyQueue.java diff --git a/src/com/walking/lesson39_queue1/task1/Main.java b/src/com/walking/lesson39_queue1/task1/Main.java index e542368b7..63767f32e 100644 --- a/src/com/walking/lesson39_queue1/task1/Main.java +++ b/src/com/walking/lesson39_queue1/task1/Main.java @@ -13,7 +13,7 @@ */ public class Main { public static void main(String[] args) { - MyList newList = new MyList<>("1"); + MyList newList = new MyList<>(); newList.add("2"); newList.add("3"); newList.add("4"); diff --git a/src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java b/src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java deleted file mode 100644 index a23122347..000000000 --- a/src/com/walking/lesson39_queue1/task1/exception/ElementNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson39_queue1.task1.exception; - -public class ElementNotFoundException extends RuntimeException { - public ElementNotFoundException(String message) { - super(message); - } -} diff --git a/src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java b/src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java new file mode 100644 index 000000000..8f772e32b --- /dev/null +++ b/src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java @@ -0,0 +1,7 @@ +package com.walking.lesson39_queue1.task1.exception; + +public class ListIsEmptyException extends RuntimeException { + public ListIsEmptyException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson39_queue1/task1/list/MyList.java b/src/com/walking/lesson39_queue1/task1/list/MyList.java index 7bdab5d69..f571fcb6b 100644 --- a/src/com/walking/lesson39_queue1/task1/list/MyList.java +++ b/src/com/walking/lesson39_queue1/task1/list/MyList.java @@ -1,18 +1,16 @@ package com.walking.lesson39_queue1.task1.list; -import com.walking.lesson39_queue1.task1.exception.ElementNotFoundException; - -import java.util.Objects; +import com.walking.lesson39_queue1.task1.exception.ListIsEmptyException; public class MyList { - private Element tail; + private Node tail; int size; public MyList() { } public MyList(E top) { - this.tail = new Element<>(top); + this.tail = new Node<>(top); size++; } @@ -24,50 +22,46 @@ public boolean isEmpty() { return size == 0; } - public Object find(Object o) { - Element el = tail; + public boolean find(Object o) { + Node el = tail; while (el != null) { if (o.equals(el.value)) { - return el.value; + return true; } el = el.previous; } - throw new ElementNotFoundException("Элемент не найден."); + return false; } - public boolean add(E el) { - tail = new Element<>(tail, el); + public void add(E el) { + tail = new Node<>(tail, el); size++; - return true; } - public boolean remove(Object o) { + public void remove(Object o) { if (isEmpty()) { - return false; + throw new ListIsEmptyException("Список пуст."); } if (o.equals(tail.value)) { tail = tail.previous; size--; - return true; } - Element el = tail; + Node el = tail; while (el.previous != null) { if (o.equals(el.previous.value)) { el.previous = el.previous.previous; size--; - return true; } el = el.previous; } - return false; } public String toString() { StringBuilder allElements = new StringBuilder(); - Element el = tail; + Node el = tail; while (el != null) { allElements.append(el.value); @@ -80,11 +74,11 @@ public String toString() { } public void reverse() { - Element prev = null; - Element top = tail; + Node prev = null; + Node top = tail; while (top != null) { - Element newTail = top.previous; + Node newTail = top.previous; top.previous = prev; prev = top; top = newTail; @@ -99,7 +93,7 @@ public void removeEvenHashCodes() { size--; } - Element current = tail; + Node current = tail; while (current.previous != null) { if (current.previous.hashCode() % 2 == 0) { current.previous = current.previous.previous; @@ -114,22 +108,17 @@ public Object getTailValue() { return tail.value; } - private static class Element { + private static class Node { private final E value; - private Element previous; + private Node previous; - private Element(E value) { + private Node(E value) { this.value = value; } - private Element(Element previous, E value) { + private Node(Node previous, E value) { this.value = value; this.previous = previous; } - - @Override - public int hashCode() { - return Objects.hash(value, previous); - } } } diff --git a/src/com/walking/lesson39_queue1/task3/Main.java b/src/com/walking/lesson39_queue1/task3/Main.java index 356a857b0..c67d55ba4 100644 --- a/src/com/walking/lesson39_queue1/task3/Main.java +++ b/src/com/walking/lesson39_queue1/task3/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson39_queue1.task3; +import com.walking.lesson39_queue1.task3.list.MyDoublyLinkedList; + /** * Реализуйте двусвязный список. * Реализуйте метод, разворачивающий список. @@ -7,5 +9,17 @@ */ public class Main { public static void main(String[] args) { + MyDoublyLinkedList numbs = new MyDoublyLinkedList<>(); + numbs.addHead(24); + numbs.addHead(47); + numbs.addHead(22); + numbs.addHead(56); + numbs.addHead(90); + numbs.addHead(1); + numbs.addTail(109); + + System.out.println(numbs); + numbs.reverse(); + System.out.println(numbs); } } diff --git a/src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java b/src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java new file mode 100644 index 000000000..8f95fd71a --- /dev/null +++ b/src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java @@ -0,0 +1,7 @@ +package com.walking.lesson39_queue1.task3.exception; + +public class ListIsEmptyException extends RuntimeException { + public ListIsEmptyException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java new file mode 100644 index 000000000..1421105af --- /dev/null +++ b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java @@ -0,0 +1,204 @@ +package com.walking.lesson39_queue1.task3.list; + +import com.walking.lesson39_queue1.task1.list.MyList; +import com.walking.lesson39_queue1.task3.exception.ListIsEmptyException; + +public class MyDoublyLinkedList { + private Node head; + private Node tail; + private int size; + + public MyDoublyLinkedList() { + } + + public MyDoublyLinkedList(E el) { + this.head = new Node<>(el); + this.tail = head; + size++; + } + + public int getSize() { + return size; + } + + public boolean isEmpty() { + return size == 0; + } + + public void addHead(E el) { + if (isEmpty()) { + this.head = new Node<>(el); + this.tail = head; + } else { + Node newHead = new Node<>(el, null, head); + head.prev = newHead; + head = newHead; + } + size++; + } + + public void addTail(E el) { + if (isEmpty()) { + this.head = new Node<>(el); + this.tail = head; + } else { + Node newTail = new Node<>(el, tail, null); + tail.next = newTail; + tail = newTail; + } + size++; + } + + public void removeHead() { + if (isEmpty()) { + throw new ListIsEmptyException("Список пуст."); + } + + head = head.next; + if (head != null) { + head.prev = null; + } else { + tail = null; + } + size--; + } + + public void removeTail() { + if (isEmpty()) { + throw new ListIsEmptyException("Список пуст."); + } + + tail = tail.prev; + if (tail != null) { + tail.next = null; + } else { + head = null; + } + size--; + } + + public void removeAll(E el) { + if (isEmpty()) { + throw new ListIsEmptyException("Список пуст."); + } + + while (!isEmpty() && tail.value.equals(el)) { + removeTail(); + } + + while (!isEmpty() && head.value.equals(el)) { + removeHead(); + } + + Node current = tail; + while (current.prev != null) { + if (current.prev.value.equals(el)) { + current.prev = current.prev.prev; + current.prev.next = current; + size--; + } + current = current.prev; + } + } + + public boolean find(Object o) { + Node el = tail; + + while (el != null) { + if (o.equals(el.value)) { + return true; + } + el = el.prev; + } + return false; + } + + public int findAll(E el) { + Node current = tail; + int amount = 0; + while (current != null) { + if (current.value.equals(el)) { + amount++; + } + current = current.prev; + } + return amount; + } + + public void reverse() { + Node current = head; + head = tail; + tail = current; + + while (current != null) { + Node temp = current.next; + current.next = current.prev; + current.prev = temp; + + current = temp; + } + } + + public void removeEvenHashCodes() { + if (isEmpty()) { + throw new ListIsEmptyException("Список пуст."); + } + + while (!isEmpty() && tail.hashCode() % 2 == 0) { + removeTail(); + } + + while (!isEmpty() && head.hashCode() % 2 == 0) { + removeHead(); + } + + Node current = tail; + while (current != null) { + if (current.hashCode() % 2 == 0) { + current.next.prev = current.prev; + current.prev.next = current.next; + size--; + } + current = current.prev; + } + + } + + public String toString() { + StringBuilder allElements = new StringBuilder(); + Node el = head; + + while (el != null) { + allElements.append(el.value); + if (el.next != null) { + allElements.append(", "); + } + el = el.next; + } + return allElements.toString(); + } + + public Object getHeadValue() { + return head.value; + } + + public Object getTailValue() { + return tail.value; + } + + private static class Node { + private final E value; + Node prev; + Node next; + + private Node(E value) { + this.value = value; + } + + private Node(E value, Node prev, Node next) { + this.value = value; + this.prev = prev; + this.next = next; + } + } +} diff --git a/src/com/walking/lesson39_queue1/task4/Main.java b/src/com/walking/lesson39_queue1/task4/Main.java index 6b8ae7821..ba203b471 100644 --- a/src/com/walking/lesson39_queue1/task4/Main.java +++ b/src/com/walking/lesson39_queue1/task4/Main.java @@ -1,9 +1,18 @@ package com.walking.lesson39_queue1.task4; +import com.walking.lesson39_queue1.task4.queue.MyQueue; + /** * Реализуйте одностороннюю очередь на базе двусвязного списка из Задачи 3. */ public class Main { public static void main(String[] args) { + MyQueue myQueue = new MyQueue<>(12); + myQueue.push(34); + myQueue.push(55); + + System.out.println(myQueue.pop()); + myQueue.pop(); + System.out.println(myQueue.peek()); } } diff --git a/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java b/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java new file mode 100644 index 000000000..e64a50b17 --- /dev/null +++ b/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java @@ -0,0 +1,25 @@ +package com.walking.lesson39_queue1.task4.queue; + +import com.walking.lesson39_queue1.task3.list.MyDoublyLinkedList; + +public class MyQueue { + private final MyDoublyLinkedList list; + + public MyQueue(E el) { + this.list = new MyDoublyLinkedList<>(el); + } + + public Object pop() { + Object value = list.getHeadValue(); + list.removeHead(); + return value; + } + + public void push(E el) { + list.addTail(el); + } + + public Object peek() { + return list.getHeadValue(); + } +} From f92de7b8d74a9a4673df08c609a826b7b2158c1d Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 8 Oct 2025 14:36:39 +0300 Subject: [PATCH 110/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson37_collection_list/task1/Main.java | 10 +++++++--- .../exception/CounterAlreadyExistException.java | 14 ++++++++++++++ .../task1/exception/CounterIsNullException.java | 7 +++++++ .../task1/service/CounterService.java | 16 ++++++++-------- 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 src/com/walking/lesson37_collection_list/task1/exception/CounterAlreadyExistException.java create mode 100644 src/com/walking/lesson37_collection_list/task1/exception/CounterIsNullException.java diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java index 4e36e5667..6afde7d80 100644 --- a/src/com/walking/lesson37_collection_list/task1/Main.java +++ b/src/com/walking/lesson37_collection_list/task1/Main.java @@ -1,5 +1,6 @@ package com.walking.lesson37_collection_list.task1; +import com.walking.lesson37_collection_list.task1.exception.CounterAlreadyExistException; import com.walking.lesson37_collection_list.task1.model.Counter; import com.walking.lesson37_collection_list.task1.service.CounterService; @@ -31,17 +32,20 @@ public static void main(String[] args) { counterService.add(hotWaterCounter); counterService.increaseValue(hotWaterCounter, 23); - counterService.add(new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT, 45)); + try { + counterService.add(new Counter(HOT_WATER_COUNTER_NAME, M_3_UNIT, 45)); + } catch (CounterAlreadyExistException e) { + System.out.println(e.getMessage()); + } counterService.incrementValue(electricCounter); counterService.delete(coldWaterCounter); - counterService.add(null); printCounterValues(counterService); } public static void printCounterValues(CounterService counterService) { for(Counter counter : counterService.getCounters()) { - System.out.println(counter.getInfo()); + System.out.print(counter.getInfo()); } } } diff --git a/src/com/walking/lesson37_collection_list/task1/exception/CounterAlreadyExistException.java b/src/com/walking/lesson37_collection_list/task1/exception/CounterAlreadyExistException.java new file mode 100644 index 000000000..4aba6286e --- /dev/null +++ b/src/com/walking/lesson37_collection_list/task1/exception/CounterAlreadyExistException.java @@ -0,0 +1,14 @@ +package com.walking.lesson37_collection_list.task1.exception; + +public class CounterAlreadyExistException extends RuntimeException { + private final String name; + + public CounterAlreadyExistException(String name) { + super("Счётчик с названием '%s' уже существует.".formatted(name)); + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/com/walking/lesson37_collection_list/task1/exception/CounterIsNullException.java b/src/com/walking/lesson37_collection_list/task1/exception/CounterIsNullException.java new file mode 100644 index 000000000..635aee150 --- /dev/null +++ b/src/com/walking/lesson37_collection_list/task1/exception/CounterIsNullException.java @@ -0,0 +1,7 @@ +package com.walking.lesson37_collection_list.task1.exception; + +public class CounterIsNullException extends RuntimeException { + public CounterIsNullException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index a147c70c0..4f35f9540 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -1,5 +1,7 @@ package com.walking.lesson37_collection_list.task1.service; +import com.walking.lesson37_collection_list.task1.exception.CounterAlreadyExistException; +import com.walking.lesson37_collection_list.task1.exception.CounterIsNullException; import com.walking.lesson37_collection_list.task1.model.Counter; import java.util.ArrayList; @@ -25,16 +27,15 @@ public Counter getByName(String name) { return null; } - public void add(Counter counter) { + public void add(Counter counter) throws CounterAlreadyExistException, CounterIsNullException { if (isNull(counter)) { - System.out.println("Добавить счётчик не удалось."); - return; + throw new CounterIsNullException("Невозможно добавить счётчик равный null."); } if (isContains(counter)) { - System.out.printf("Счётчик с названием '%s' уже существует.\n", counter.getNAME()); - return; + throw new CounterAlreadyExistException(counter.getNAME()); } + counters.add(counter); System.out.printf("Счётчик '%s' добавлен.\n", counter.getNAME()); @@ -46,10 +47,9 @@ public void delete(Counter counter) { } - public void increaseValue(Counter counter, int value) { + public void increaseValue(Counter counter, int value) throws CounterIsNullException { if (isNull(counter)) { - System.out.println("Обновить данные счётчика не удалось."); - return; + throw new CounterIsNullException("Изменить показания счётчика, равного null, невозможно."); } int newValue = counter.getValue() + value; From d848de10c610638325eb609753858363e9b9bf08 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 8 Oct 2025 16:26:14 +0300 Subject: [PATCH 111/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/service/CounterService.java | 2 +- src/com/walking/lesson39_queue1/task3/Main.java | 14 +++++++------- .../task3/list/MyDoublyLinkedList.java | 17 ++++++++--------- .../lesson39_queue1/task4/queue/MyQueue.java | 4 ++-- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 4f35f9540..77cd05a5e 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -54,7 +54,7 @@ public void increaseValue(Counter counter, int value) throws CounterIsNullExcept int newValue = counter.getValue() + value; counter.setValue(newValue); - System.out.printf("Данные счётчика '%s' обновлены.\n", counter.getNAME()); + System.out.printf("Показания счётчика '%s' обновлены.\n", counter.getNAME()); } public void incrementValue(Counter counter) { diff --git a/src/com/walking/lesson39_queue1/task3/Main.java b/src/com/walking/lesson39_queue1/task3/Main.java index c67d55ba4..604b426eb 100644 --- a/src/com/walking/lesson39_queue1/task3/Main.java +++ b/src/com/walking/lesson39_queue1/task3/Main.java @@ -10,13 +10,13 @@ public class Main { public static void main(String[] args) { MyDoublyLinkedList numbs = new MyDoublyLinkedList<>(); - numbs.addHead(24); - numbs.addHead(47); - numbs.addHead(22); - numbs.addHead(56); - numbs.addHead(90); - numbs.addHead(1); - numbs.addTail(109); + numbs.addFirst(24); + numbs.addFirst(47); + numbs.addFirst(22); + numbs.addFirst(56); + numbs.addFirst(90); + numbs.addFirst(1); + numbs.addLast(109); System.out.println(numbs); numbs.reverse(); diff --git a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java index 1421105af..768efcaa1 100644 --- a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java +++ b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java @@ -1,6 +1,5 @@ package com.walking.lesson39_queue1.task3.list; -import com.walking.lesson39_queue1.task1.list.MyList; import com.walking.lesson39_queue1.task3.exception.ListIsEmptyException; public class MyDoublyLinkedList { @@ -25,7 +24,7 @@ public boolean isEmpty() { return size == 0; } - public void addHead(E el) { + public void addFirst(E el) { if (isEmpty()) { this.head = new Node<>(el); this.tail = head; @@ -37,7 +36,7 @@ public void addHead(E el) { size++; } - public void addTail(E el) { + public void addLast(E el) { if (isEmpty()) { this.head = new Node<>(el); this.tail = head; @@ -49,7 +48,7 @@ public void addTail(E el) { size++; } - public void removeHead() { + public void removeFirst() { if (isEmpty()) { throw new ListIsEmptyException("Список пуст."); } @@ -63,7 +62,7 @@ public void removeHead() { size--; } - public void removeTail() { + public void removeLast() { if (isEmpty()) { throw new ListIsEmptyException("Список пуст."); } @@ -83,11 +82,11 @@ public void removeAll(E el) { } while (!isEmpty() && tail.value.equals(el)) { - removeTail(); + removeLast(); } while (!isEmpty() && head.value.equals(el)) { - removeHead(); + removeFirst(); } Node current = tail; @@ -145,11 +144,11 @@ public void removeEvenHashCodes() { } while (!isEmpty() && tail.hashCode() % 2 == 0) { - removeTail(); + removeLast(); } while (!isEmpty() && head.hashCode() % 2 == 0) { - removeHead(); + removeFirst(); } Node current = tail; diff --git a/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java b/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java index e64a50b17..77d4aa63a 100644 --- a/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java +++ b/src/com/walking/lesson39_queue1/task4/queue/MyQueue.java @@ -11,12 +11,12 @@ public MyQueue(E el) { public Object pop() { Object value = list.getHeadValue(); - list.removeHead(); + list.removeFirst(); return value; } public void push(E el) { - list.addTail(el); + list.addLast(el); } public Object peek() { From 4d7ed833c9e8d0896921b71e8283471cd45809b6 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 9 Oct 2025 13:36:25 +0300 Subject: [PATCH 112/131] lesson 40, task --- src/com/walking/lesson40_queue2/Main.java | 22 ++++++++++ .../walking/lesson40_queue2/model/Task.java | 19 +++++++++ .../lesson40_queue2/service/TaskService.java | 42 +++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 src/com/walking/lesson40_queue2/model/Task.java create mode 100644 src/com/walking/lesson40_queue2/service/TaskService.java diff --git a/src/com/walking/lesson40_queue2/Main.java b/src/com/walking/lesson40_queue2/Main.java index 680b28259..d9d56272e 100644 --- a/src/com/walking/lesson40_queue2/Main.java +++ b/src/com/walking/lesson40_queue2/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson40_queue2; +import com.walking.lesson40_queue2.model.Task; +import com.walking.lesson40_queue2.service.TaskService; + +import java.util.Scanner; + /** * Реализуйте класс Задание. Он должен содержать поле Название, * состав остальных полей - на ваше усмотрение. @@ -15,5 +20,22 @@ */ public class Main { public static void main(String[] args) { + TaskService tasks = createTaskPool(); + while(tasks.getAmount() != 0) { + Scanner in = new Scanner(System.in); + System.out.println(tasks.get().getName()); + int answer = in.nextInt(); + tasks.complete(answer); + } + + } + + public static TaskService createTaskPool() { + TaskService tasks = new TaskService(); + tasks.add(new Task("Корень из 576", 24)); + tasks.add(new Task("32 в квадрате", 1024)); + tasks.add(new Task("12 в квадрате", 144)); + + return tasks; } } diff --git a/src/com/walking/lesson40_queue2/model/Task.java b/src/com/walking/lesson40_queue2/model/Task.java new file mode 100644 index 000000000..9491f6cbb --- /dev/null +++ b/src/com/walking/lesson40_queue2/model/Task.java @@ -0,0 +1,19 @@ +package com.walking.lesson40_queue2.model; + +public class Task { + private final String name; + private final int answer; + + public Task(String name, int answer) { + this.name = name; + this.answer = answer; + } + + public String getName() { + return name; + } + + public int getAnswer() { + return answer; + } +} diff --git a/src/com/walking/lesson40_queue2/service/TaskService.java b/src/com/walking/lesson40_queue2/service/TaskService.java new file mode 100644 index 000000000..66fb875d9 --- /dev/null +++ b/src/com/walking/lesson40_queue2/service/TaskService.java @@ -0,0 +1,42 @@ +package com.walking.lesson40_queue2.service; + +import com.walking.lesson40_queue2.model.Task; + +import java.util.Deque; +import java.util.LinkedList; + +public class TaskService { + private final Deque tasks; + private int amount; + + public TaskService() { + this.tasks = new LinkedList<>(); + } + + public void add(Task task) { + tasks.add(task); + amount++; + System.out.printf("Задание '%s' добавлено.%n", task.getName()); + } + + public void complete(int answer) { + Task completedTask = get(); + if (completedTask == null) { + System.out.println("Все задания выполнены."); + } else if (completedTask.getAnswer() == answer) { + tasks.removeFirst(); + amount--; + System.out.printf("Задание '%s' выполнено.%n", completedTask.getName()); + } else { + System.out.println("Ответ неверный."); + } + } + + public Task get() { + return tasks.peek(); + } + + public int getAmount() { + return amount; + } +} From f1731634d7bb5c9ff4e022978c0ab7b6c2b5d20e Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 14 Oct 2025 14:24:43 +0300 Subject: [PATCH 113/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task1/service/CounterService.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java index 77cd05a5e..1377a86e5 100644 --- a/src/com/walking/lesson37_collection_list/task1/service/CounterService.java +++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java @@ -27,7 +27,7 @@ public Counter getByName(String name) { return null; } - public void add(Counter counter) throws CounterAlreadyExistException, CounterIsNullException { + public Counter add(Counter counter) throws CounterAlreadyExistException, CounterIsNullException { if (isNull(counter)) { throw new CounterIsNullException("Невозможно добавить счётчик равный null."); } @@ -38,16 +38,16 @@ public void add(Counter counter) throws CounterAlreadyExistException, CounterIsN counters.add(counter); System.out.printf("Счётчик '%s' добавлен.\n", counter.getNAME()); - + return counter; } - public void delete(Counter counter) { + public Counter delete(Counter counter) { counters.remove(counter); System.out.printf("Счётчик '%s' удалён.\n", counter.getNAME()); - + return counter; } - public void increaseValue(Counter counter, int value) throws CounterIsNullException { + public Counter increaseValue(Counter counter, int value) throws CounterIsNullException { if (isNull(counter)) { throw new CounterIsNullException("Изменить показания счётчика, равного null, невозможно."); } @@ -55,26 +55,28 @@ public void increaseValue(Counter counter, int value) throws CounterIsNullExcept int newValue = counter.getValue() + value; counter.setValue(newValue); System.out.printf("Показания счётчика '%s' обновлены.\n", counter.getNAME()); + return counter; } - public void incrementValue(Counter counter) { - increaseValue(counter, 1); + public Counter incrementValue(Counter counter) { + return increaseValue(counter, 1); } - public void increaseValue(String name, int value) { - increaseValue(getByName(name), value); + public Counter increaseValue(String name, int value) { + return increaseValue(getByName(name), value); } - public void incrementValue(String name) { - incrementValue(getByName(name)); + public Counter incrementValue(String name) { + return incrementValue(getByName(name)); } - public void resetValue(Counter counter) { + public Counter resetValue(Counter counter) { counter.setValue(0); + return counter; } - public void resetValue(String name) { - resetValue(getByName(name)); + public Counter resetValue(String name) { + return resetValue(getByName(name)); } public List getCounters() { From 3a530fa45483fd3bf66007269e5e8e2aae224cc8 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 15 Oct 2025 17:58:30 +0300 Subject: [PATCH 114/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../walking/lesson39_queue1/task1/Main.java | 11 +++--- .../task1/exception/ListIsEmptyException.java | 7 ---- .../lesson39_queue1/task1/list/MyList.java | 33 ++++++++++-------- .../lesson39_queue1/task2/stack/MyStack.java | 2 +- .../walking/lesson39_queue1/task3/Main.java | 14 ++++---- .../task3/exception/ListIsEmptyException.java | 7 ---- .../task3/list/MyDoublyLinkedList.java | 34 +++++++++---------- .../lesson40_queue2/service/TaskService.java | 5 +-- 8 files changed, 51 insertions(+), 62 deletions(-) delete mode 100644 src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java delete mode 100644 src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java diff --git a/src/com/walking/lesson39_queue1/task1/Main.java b/src/com/walking/lesson39_queue1/task1/Main.java index 63767f32e..6e38b9b4d 100644 --- a/src/com/walking/lesson39_queue1/task1/Main.java +++ b/src/com/walking/lesson39_queue1/task1/Main.java @@ -14,15 +14,14 @@ public class Main { public static void main(String[] args) { MyList newList = new MyList<>(); - newList.add("2"); - newList.add("3"); + newList.add("4"); + newList.add("4"); + newList.add("4"); + newList.add("4"); newList.add("4"); System.out.println(newList); - newList.reverse(); - System.out.println(newList); - newList.removeEvenHashCodes(); - System.out.println(newList.getSize()); + newList.remove("4"); System.out.println(newList); } } diff --git a/src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java b/src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java deleted file mode 100644 index 8f772e32b..000000000 --- a/src/com/walking/lesson39_queue1/task1/exception/ListIsEmptyException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson39_queue1.task1.exception; - -public class ListIsEmptyException extends RuntimeException { - public ListIsEmptyException(String message) { - super(message); - } -} diff --git a/src/com/walking/lesson39_queue1/task1/list/MyList.java b/src/com/walking/lesson39_queue1/task1/list/MyList.java index f571fcb6b..a268f9350 100644 --- a/src/com/walking/lesson39_queue1/task1/list/MyList.java +++ b/src/com/walking/lesson39_queue1/task1/list/MyList.java @@ -1,7 +1,5 @@ package com.walking.lesson39_queue1.task1.list; -import com.walking.lesson39_queue1.task1.exception.ListIsEmptyException; - public class MyList { private Node tail; int size; @@ -22,7 +20,7 @@ public boolean isEmpty() { return size == 0; } - public boolean find(Object o) { + public boolean contains(Object o) { Node el = tail; while (el != null) { @@ -39,23 +37,30 @@ public void add(E el) { size++; } - public void remove(Object o) { + public void removeTail() { if (isEmpty()) { - throw new ListIsEmptyException("Список пуст."); + return; } - if (o.equals(tail.value)) { - tail = tail.previous; - size--; + tail = tail.previous; + size--; + } + + public void remove(Object o) { + while (!isEmpty() && o.equals(tail.value)) { + removeTail(); } - Node el = tail; - while (el.previous != null) { - if (o.equals(el.previous.value)) { - el.previous = el.previous.previous; - size--; + if (!isEmpty()) { + Node el = tail; + while (el.previous != null) { + if (o.equals(el.previous.value)) { + el.previous = el.previous.previous; + size--; + } else { + el = el.previous; + } } - el = el.previous; } } diff --git a/src/com/walking/lesson39_queue1/task2/stack/MyStack.java b/src/com/walking/lesson39_queue1/task2/stack/MyStack.java index 7d5ff9ffc..aa761202d 100644 --- a/src/com/walking/lesson39_queue1/task2/stack/MyStack.java +++ b/src/com/walking/lesson39_queue1/task2/stack/MyStack.java @@ -23,7 +23,7 @@ public void push(E el) { public Object pop() { Object del = list.getTailValue(); - list.remove(del); + list.removeTail(); return del; } } diff --git a/src/com/walking/lesson39_queue1/task3/Main.java b/src/com/walking/lesson39_queue1/task3/Main.java index 604b426eb..cf1fd0487 100644 --- a/src/com/walking/lesson39_queue1/task3/Main.java +++ b/src/com/walking/lesson39_queue1/task3/Main.java @@ -11,15 +11,15 @@ public class Main { public static void main(String[] args) { MyDoublyLinkedList numbs = new MyDoublyLinkedList<>(); numbs.addFirst(24); - numbs.addFirst(47); - numbs.addFirst(22); - numbs.addFirst(56); - numbs.addFirst(90); - numbs.addFirst(1); - numbs.addLast(109); + numbs.addFirst(24); + numbs.addFirst(24); + numbs.addFirst(24); + numbs.addFirst(24); + numbs.addFirst(24); + numbs.addFirst(3); System.out.println(numbs); - numbs.reverse(); + numbs.removeAll(24); System.out.println(numbs); } } diff --git a/src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java b/src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java deleted file mode 100644 index 8f95fd71a..000000000 --- a/src/com/walking/lesson39_queue1/task3/exception/ListIsEmptyException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.walking.lesson39_queue1.task3.exception; - -public class ListIsEmptyException extends RuntimeException { - public ListIsEmptyException(String message) { - super(message); - } -} diff --git a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java index 768efcaa1..5eeaec3eb 100644 --- a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java +++ b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java @@ -1,7 +1,5 @@ package com.walking.lesson39_queue1.task3.list; -import com.walking.lesson39_queue1.task3.exception.ListIsEmptyException; - public class MyDoublyLinkedList { private Node head; private Node tail; @@ -50,7 +48,7 @@ public void addLast(E el) { public void removeFirst() { if (isEmpty()) { - throw new ListIsEmptyException("Список пуст."); + return; } head = head.next; @@ -64,7 +62,7 @@ public void removeFirst() { public void removeLast() { if (isEmpty()) { - throw new ListIsEmptyException("Список пуст."); + return; } tail = tail.prev; @@ -77,10 +75,6 @@ public void removeLast() { } public void removeAll(E el) { - if (isEmpty()) { - throw new ListIsEmptyException("Список пуст."); - } - while (!isEmpty() && tail.value.equals(el)) { removeLast(); } @@ -89,18 +83,22 @@ public void removeAll(E el) { removeFirst(); } - Node current = tail; - while (current.prev != null) { - if (current.prev.value.equals(el)) { - current.prev = current.prev.prev; - current.prev.next = current; - size--; + if (!isEmpty()) { + Node current = tail; + Node previous = tail.prev; + while (previous != null) { + if (previous.value.equals(el)) { + current.prev = previous.prev; + current.prev.next = current; + size--; + } + current = current.prev; + previous = current.prev; } - current = current.prev; } } - public boolean find(Object o) { + public boolean contains(Object o) { Node el = tail; while (el != null) { @@ -112,7 +110,7 @@ public boolean find(Object o) { return false; } - public int findAll(E el) { + public int numberOfOccurrences(E el) { Node current = tail; int amount = 0; while (current != null) { @@ -140,7 +138,7 @@ public void reverse() { public void removeEvenHashCodes() { if (isEmpty()) { - throw new ListIsEmptyException("Список пуст."); + return; } while (!isEmpty() && tail.hashCode() % 2 == 0) { diff --git a/src/com/walking/lesson40_queue2/service/TaskService.java b/src/com/walking/lesson40_queue2/service/TaskService.java index 66fb875d9..a8ebd4e5d 100644 --- a/src/com/walking/lesson40_queue2/service/TaskService.java +++ b/src/com/walking/lesson40_queue2/service/TaskService.java @@ -4,9 +4,10 @@ import java.util.Deque; import java.util.LinkedList; +import java.util.Queue; public class TaskService { - private final Deque tasks; + private final Queue tasks; private int amount; public TaskService() { @@ -24,7 +25,7 @@ public void complete(int answer) { if (completedTask == null) { System.out.println("Все задания выполнены."); } else if (completedTask.getAnswer() == answer) { - tasks.removeFirst(); + tasks.remove(); amount--; System.out.printf("Задание '%s' выполнено.%n", completedTask.getName()); } else { From 7f9545ffcb4f1e27de6df839d6327fd4b85f2e44 Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 24 Oct 2025 14:06:38 +0300 Subject: [PATCH 115/131] lesson 41, task 1 --- .../lesson40_queue2/service/TaskService.java | 1 - src/com/walking/lesson41_set/task1/Main.java | 23 +++++++++ .../lesson41_set/task1/model/Task.java | 19 ++++++++ .../task1/service/TaskService.java | 47 +++++++++++++++++++ 4 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson41_set/task1/model/Task.java create mode 100644 src/com/walking/lesson41_set/task1/service/TaskService.java diff --git a/src/com/walking/lesson40_queue2/service/TaskService.java b/src/com/walking/lesson40_queue2/service/TaskService.java index a8ebd4e5d..28996d77f 100644 --- a/src/com/walking/lesson40_queue2/service/TaskService.java +++ b/src/com/walking/lesson40_queue2/service/TaskService.java @@ -2,7 +2,6 @@ import com.walking.lesson40_queue2.model.Task; -import java.util.Deque; import java.util.LinkedList; import java.util.Queue; diff --git a/src/com/walking/lesson41_set/task1/Main.java b/src/com/walking/lesson41_set/task1/Main.java index 634eca5f2..4a4cc601c 100644 --- a/src/com/walking/lesson41_set/task1/Main.java +++ b/src/com/walking/lesson41_set/task1/Main.java @@ -1,5 +1,11 @@ package com.walking.lesson41_set.task1; + +import com.walking.lesson41_set.task1.model.Task; +import com.walking.lesson41_set.task1.service.TaskService; + +import java.util.Scanner; + /** * Реализуйте задачу * ..., @@ -9,5 +15,22 @@ */ public class Main { public static void main(String[] args) { + TaskService tasks = createTaskPool(); + while(tasks.getAmount() != 0) { + Scanner in = new Scanner(System.in); + System.out.println(tasks.get().getName()); + int answer = in.nextInt(); + System.out.println(tasks.complete(answer)); + } + System.out.println("Все задания выполнены!"); + } + + public static TaskService createTaskPool() { + TaskService tasks = new TaskService(); + tasks.add(new Task("Корень из 576", 24)); + tasks.add(new Task("32 в квадрате", 1024)); + tasks.add(new Task("12 в квадрате", 144)); + + return tasks; } } diff --git a/src/com/walking/lesson41_set/task1/model/Task.java b/src/com/walking/lesson41_set/task1/model/Task.java new file mode 100644 index 000000000..e5349e6e4 --- /dev/null +++ b/src/com/walking/lesson41_set/task1/model/Task.java @@ -0,0 +1,19 @@ +package com.walking.lesson41_set.task1.model; + +public class Task { + private final String name; + private final int answer; + + public Task(String name, int answer) { + this.name = name; + this.answer = answer; + } + + public String getName() { + return name; + } + + public int getAnswer() { + return answer; + } +} diff --git a/src/com/walking/lesson41_set/task1/service/TaskService.java b/src/com/walking/lesson41_set/task1/service/TaskService.java new file mode 100644 index 000000000..90ccba931 --- /dev/null +++ b/src/com/walking/lesson41_set/task1/service/TaskService.java @@ -0,0 +1,47 @@ +package com.walking.lesson41_set.task1.service; + +import com.walking.lesson41_set.task1.model.Task; + +import java.util.LinkedHashSet; +import java.util.NoSuchElementException; + +public class TaskService { + private final LinkedHashSet tasks; + private int amount; + + public TaskService() { + this.tasks = new LinkedHashSet<>(); + } + + public void add(Task task) { + tasks.add(task); + amount++; + System.out.printf("Задание '%s' добавлено.%n", task.getName()); + } + + public String complete(int answer) { + Task completedTask = get(); + if (completedTask == null) { + return "Все задания выполнены."; + } + if (completedTask.getAnswer() == answer) { + tasks.removeFirst(); + amount--; + return "Задание '%s' выполнено.%n".formatted(completedTask.getName()); + } + return "Ответ неверный."; + + } + + public Task get() { + try { + return tasks.getFirst(); + } catch (NoSuchElementException e) { + return null; + } + } + + public int getAmount() { + return amount; + } +} From a2b7ca35b8fd6711cae6b1ccd1fc4690eb1ebdf7 Mon Sep 17 00:00:00 2001 From: Rita Date: Fri, 24 Oct 2025 15:19:57 +0300 Subject: [PATCH 116/131] lesson 41, task 2 --- src/com/walking/lesson41_set/task2/Main.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/com/walking/lesson41_set/task2/Main.java b/src/com/walking/lesson41_set/task2/Main.java index da8e67044..01d6c2362 100644 --- a/src/com/walking/lesson41_set/task2/Main.java +++ b/src/com/walking/lesson41_set/task2/Main.java @@ -1,5 +1,9 @@ package com.walking.lesson41_set.task2; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Scanner; + /** * Реализуйте задачу * ..., @@ -7,5 +11,19 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите фразу: "); + String phrase = in.nextLine(); + + HashSet uniqueWords = getSetOfUniqueWords(phrase); + System.out.printf("Найдено уникальных слов: %d", uniqueWords.size()); + } + + public static HashSet getSetOfUniqueWords(String phrase) { + String[] words = phrase.trim() + .toLowerCase() + .split(" "); + + return new HashSet<>(Arrays.asList(words)); } } From 8623eae4a1cfb17d115e8d0c8515fae9fd4df4f2 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 8 Nov 2025 16:31:54 +0300 Subject: [PATCH 117/131] =?UTF-8?q?lesson=2042,=20task1,=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0=D0=BD=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson42_tree/task1/Main.java | 24 +++ .../lesson42_tree/task1/tree/BinaryTree.java | 151 ++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 src/com/walking/lesson42_tree/task1/tree/BinaryTree.java diff --git a/src/com/walking/lesson42_tree/task1/Main.java b/src/com/walking/lesson42_tree/task1/Main.java index 082700c06..c1ddfddb1 100644 --- a/src/com/walking/lesson42_tree/task1/Main.java +++ b/src/com/walking/lesson42_tree/task1/Main.java @@ -1,5 +1,8 @@ package com.walking.lesson42_tree.task1; +import com.walking.lesson42_tree.task1.tree.BinaryTree; + + /** * Реализуйте бинарное дерево поиска. Учтите возможность использования дерева как для Comparable-сущностей, * так и для сортировки на основе компаратора. @@ -15,5 +18,26 @@ */ public class Main { public static void main(String[] args) { + BinaryTree numbs = new BinaryTree<>(); + numbs.add(32); + numbs.add(46); + numbs.add(17); + numbs.add(10); + numbs.add(23); + numbs.add(56); + numbs.add(54); + numbs.add(55); + numbs.add(47); + numbs.add(73); + numbs.add(64); + + numbs.delete(56); + numbs.add(87); + + System.out.println(numbs.traversePreorder()); + + numbs.balance(); + + System.out.println(numbs.traversePreorder()); } } diff --git a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java new file mode 100644 index 000000000..c1a68af8d --- /dev/null +++ b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java @@ -0,0 +1,151 @@ +package com.walking.lesson42_tree.task1.tree; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +public class BinaryTree { + private Node root; + private Comparator comparator; + + public BinaryTree() { + + } + + public BinaryTree(Comparator comparator) { + this.comparator = comparator; + } + + public boolean isEmpty() { + return root == null; + } + + public void clear() { + root = null; + } + + public E add(E el) { + if (isEmpty()) { + compare(el, el); + root = new Node<>(el); + } else { + add(el, root); + } + return el; + } + + public E delete(E el) { + if (isEmpty()) { + return null; + } else { + delete(el, root); + return el; + } + } + + public void balance() { + List list = traversePreorder(); + list.sort(comparator == null ? (Comparator) Comparator.naturalOrder() : comparator); + + int middle = list.size() / 2; + root = new Node<>(list.get(middle)); + balance(list, middle, list.size()); + balance(list, -1, middle); + } + + private void balance(List list, int low, int high) { + int middleIndex = high - ((high - low) / 2); + add(list.get(middleIndex)); + + if (middleIndex - low > 1) { + balance(list, low, middleIndex); + } + if (high - middleIndex > 1) { + balance(list, middleIndex, high); + } + } + + public List traversePreorder() { + List list = new ArrayList<>(); + traversePreorder(root, list); + return list; + } + + private void traversePreorder(Node node, List list) { + list.add(node.value); + if (node.left != null) { + traversePreorder(node.left, list); + } + if (node.right != null) { + traversePreorder(node.right, list); + } + } + + private Node add(E el, Node node) { + int compareResult = compare(el, node.value); + + if (compareResult > 0) { + return node.right == null ? node.right = new Node<>(el, node) : add(el, node.right); + } else { + return node.left == null ? node.left = new Node<>(el, node) : add(el, node.left); + } + } + + private Node delete(E el, Node node) { + int compareResult = compare(el, node.value); + Node result = node; + + if (compareResult > 0) { + node.right = delete(el, node.right); + } else if (compareResult < 0) { + node.left = delete(el, node.left); + } else { + if (node.right != null && node.left != null) { + Node max = findMax(node.left); + node.value = max.value; + delete(max.value, max.parent); + } else if (node.left != null) { + result = node.left.parent = node.parent; + } else if (node.right != null) { + result = node.right.parent = node.parent; + } else { + result = null; + } + } + return result; + } + + private Node findMax(Node node) { + if (node.right == null) { + return node; + } else { + return findMax(node.right); + } + } + + private int compare(E el1, E el2) { + return comparator == null + ? ((Comparable) el1).compareTo(el2) + : comparator.compare(el1, el2); + } + + public E getRootValue() { + return root.value; + } + + private static class Node { + private E value; + Node left; + Node right; + Node parent; + + private Node(E value) { + this.value = value; + } + + private Node(E value, Node parent) { + this.value = value; + this.parent = parent; + } + } +} From 49cb8be44d8bc2ae84ad0d4e866165f514d2e178 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 8 Nov 2025 17:05:50 +0300 Subject: [PATCH 118/131] =?UTF-8?q?lesson=2042,=20task1,=20=D0=B8=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=20=D0=B2=20=D1=88=D0=B8?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson42_tree/task1/Main.java | 5 +- .../lesson42_tree/task1/tree/BinaryTree.java | 48 ++++++++++++++----- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/com/walking/lesson42_tree/task1/Main.java b/src/com/walking/lesson42_tree/task1/Main.java index c1ddfddb1..d4097221e 100644 --- a/src/com/walking/lesson42_tree/task1/Main.java +++ b/src/com/walking/lesson42_tree/task1/Main.java @@ -34,10 +34,11 @@ public static void main(String[] args) { numbs.delete(56); numbs.add(87); - System.out.println(numbs.traversePreorder()); + System.out.println(numbs.searchPreorder()); numbs.balance(); - System.out.println(numbs.traversePreorder()); + System.out.println(numbs.searchPreorder()); + System.out.println(numbs.searchBreadthFirst()); } } diff --git a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java index c1a68af8d..d8f7e8ffa 100644 --- a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java +++ b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java @@ -1,8 +1,6 @@ package com.walking.lesson42_tree.task1.tree; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; +import java.util.*; public class BinaryTree { private Node root; @@ -43,8 +41,38 @@ public E delete(E el) { } } + public List searchPreorder() { + List list = new ArrayList<>(); + searchPreorder(root, list); + return list; + } + + public List searchBreadthFirst() { + List list = new ArrayList<>(); + Queue> queue = new ArrayDeque<>(); + queue.add(root); + searchBreadthFirst(list, queue); + + return list; + } + + private void searchBreadthFirst(List list, Queue> queue) { + while (!queue.isEmpty()) { + for (Node node : queue) { + list.add(node.value); + if (node.left != null) { + queue.add(node.left); + } + if (node.right != null) { + queue.add(node.right); + } + queue.remove(); + } + } + } + public void balance() { - List list = traversePreorder(); + List list = searchPreorder(); list.sort(comparator == null ? (Comparator) Comparator.naturalOrder() : comparator); int middle = list.size() / 2; @@ -65,19 +93,13 @@ private void balance(List list, int low, int high) { } } - public List traversePreorder() { - List list = new ArrayList<>(); - traversePreorder(root, list); - return list; - } - - private void traversePreorder(Node node, List list) { + private void searchPreorder(Node node, List list) { list.add(node.value); if (node.left != null) { - traversePreorder(node.left, list); + searchPreorder(node.left, list); } if (node.right != null) { - traversePreorder(node.right, list); + searchPreorder(node.right, list); } } From a2c243fb0d9fc41dd5a04a83c513126ef0e5b138 Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 8 Nov 2025 17:48:31 +0300 Subject: [PATCH 119/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson42_tree/task1/tree/BinaryTree.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java index d8f7e8ffa..0a0a35570 100644 --- a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java +++ b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java @@ -51,12 +51,7 @@ public List searchBreadthFirst() { List list = new ArrayList<>(); Queue> queue = new ArrayDeque<>(); queue.add(root); - searchBreadthFirst(list, queue); - return list; - } - - private void searchBreadthFirst(List list, Queue> queue) { while (!queue.isEmpty()) { for (Node node : queue) { list.add(node.value); @@ -69,6 +64,7 @@ private void searchBreadthFirst(List list, Queue> queue) { queue.remove(); } } + return list; } public void balance() { From 0a3553cc4e64b867b24797d92e06e47dd60f9730 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 18 Nov 2025 21:36:21 +0300 Subject: [PATCH 120/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task3/list/MyDoublyLinkedList.java | 2 +- src/com/walking/lesson41_set/task1/Main.java | 9 +-- .../lesson41_set/task1/model/Task.java | 9 +++ .../task1/service/TaskService2.java | 53 +++++++++++++++ src/com/walking/lesson41_set/task2/Main.java | 5 +- src/com/walking/lesson42_tree/task1/Main.java | 6 +- .../lesson42_tree/task1/tree/BinaryTree.java | 68 ++++++++++--------- 7 files changed, 109 insertions(+), 43 deletions(-) create mode 100644 src/com/walking/lesson41_set/task1/service/TaskService2.java diff --git a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java index 5eeaec3eb..1c78e22fa 100644 --- a/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java +++ b/src/com/walking/lesson39_queue1/task3/list/MyDoublyLinkedList.java @@ -110,7 +110,7 @@ public boolean contains(Object o) { return false; } - public int numberOfOccurrences(E el) { + public int countOccurrences(E el) { Node current = tail; int amount = 0; while (current != null) { diff --git a/src/com/walking/lesson41_set/task1/Main.java b/src/com/walking/lesson41_set/task1/Main.java index 4a4cc601c..7a4826e68 100644 --- a/src/com/walking/lesson41_set/task1/Main.java +++ b/src/com/walking/lesson41_set/task1/Main.java @@ -3,6 +3,7 @@ import com.walking.lesson41_set.task1.model.Task; import com.walking.lesson41_set.task1.service.TaskService; +import com.walking.lesson41_set.task1.service.TaskService2; import java.util.Scanner; @@ -15,18 +16,18 @@ */ public class Main { public static void main(String[] args) { - TaskService tasks = createTaskPool(); + TaskService2 tasks = createTaskPool(); while(tasks.getAmount() != 0) { Scanner in = new Scanner(System.in); - System.out.println(tasks.get().getName()); + System.out.println(tasks.getFirst().getName()); int answer = in.nextInt(); System.out.println(tasks.complete(answer)); } System.out.println("Все задания выполнены!"); } - public static TaskService createTaskPool() { - TaskService tasks = new TaskService(); + public static TaskService2 createTaskPool() { + TaskService2 tasks = new TaskService2(); tasks.add(new Task("Корень из 576", 24)); tasks.add(new Task("32 в квадрате", 1024)); tasks.add(new Task("12 в квадрате", 144)); diff --git a/src/com/walking/lesson41_set/task1/model/Task.java b/src/com/walking/lesson41_set/task1/model/Task.java index e5349e6e4..5db3c078b 100644 --- a/src/com/walking/lesson41_set/task1/model/Task.java +++ b/src/com/walking/lesson41_set/task1/model/Task.java @@ -3,6 +3,7 @@ public class Task { private final String name; private final int answer; + private int number; public Task(String name, int answer) { this.name = name; @@ -13,6 +14,14 @@ public String getName() { return name; } + public void setNumber(int number) { + this.number = number; + } + + public int getNumber() { + return number; + } + public int getAnswer() { return answer; } diff --git a/src/com/walking/lesson41_set/task1/service/TaskService2.java b/src/com/walking/lesson41_set/task1/service/TaskService2.java new file mode 100644 index 000000000..382318e6f --- /dev/null +++ b/src/com/walking/lesson41_set/task1/service/TaskService2.java @@ -0,0 +1,53 @@ +package com.walking.lesson41_set.task1.service; + +import com.walking.lesson41_set.task1.model.Task; + +import java.util.Comparator; +import java.util.NoSuchElementException; +import java.util.TreeSet; + +public class TaskService2 { + private final TreeSet tasks; + private int amount; + + public TaskService2() { + this.tasks = new TreeSet<>(new Comparator() { + @Override + public int compare(Task t1, Task t2) { + return t1.getNumber() - t2.getNumber(); + } + }); + } + + public void add(Task task) { + amount++; + task.setNumber(amount); + tasks.add(task); + System.out.printf("Задание '%s' добавлено.%n", task.getName()); + } + + public String complete(int answer) { + Task completedTask = getFirst(); + if (completedTask == null) { + return "Все задания выполнены."; + } + if (completedTask.getAnswer() == answer) { + tasks.remove(completedTask); + amount--; + return "Задание '%s' выполнено.%n".formatted(completedTask.getName()); + } + return "Ответ неверный."; + } + + public Task getFirst() { + try { + return tasks.first(); + } catch (NoSuchElementException e) { + return null; + } + } + + public int getAmount() { + return amount; + } +} diff --git a/src/com/walking/lesson41_set/task2/Main.java b/src/com/walking/lesson41_set/task2/Main.java index 01d6c2362..c4e1d2efb 100644 --- a/src/com/walking/lesson41_set/task2/Main.java +++ b/src/com/walking/lesson41_set/task2/Main.java @@ -3,6 +3,7 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Scanner; +import java.util.Set; /** * Реализуйте задачу @@ -15,11 +16,11 @@ public static void main(String[] args) { System.out.print("Введите фразу: "); String phrase = in.nextLine(); - HashSet uniqueWords = getSetOfUniqueWords(phrase); + Set uniqueWords = getUniqueWords(phrase); System.out.printf("Найдено уникальных слов: %d", uniqueWords.size()); } - public static HashSet getSetOfUniqueWords(String phrase) { + public static Set getUniqueWords(String phrase) { String[] words = phrase.trim() .toLowerCase() .split(" "); diff --git a/src/com/walking/lesson42_tree/task1/Main.java b/src/com/walking/lesson42_tree/task1/Main.java index d4097221e..dd3b5eeb3 100644 --- a/src/com/walking/lesson42_tree/task1/Main.java +++ b/src/com/walking/lesson42_tree/task1/Main.java @@ -34,11 +34,11 @@ public static void main(String[] args) { numbs.delete(56); numbs.add(87); - System.out.println(numbs.searchPreorder()); + System.out.println(numbs.bypassPreorder()); numbs.balance(); - System.out.println(numbs.searchPreorder()); - System.out.println(numbs.searchBreadthFirst()); + System.out.println(numbs.bypassPreorder()); + System.out.println(numbs.bypassBreadthFirst()); } } diff --git a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java index 0a0a35570..a8adff7c5 100644 --- a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java +++ b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java @@ -33,21 +33,17 @@ public E add(E el) { } public E delete(E el) { - if (isEmpty()) { - return null; - } else { - delete(el, root); - return el; - } + return (isEmpty()) ? null : delete(el, root).value; + } - public List searchPreorder() { + public List bypassPreorder() { List list = new ArrayList<>(); - searchPreorder(root, list); + bypassPreorder(root, list); return list; } - public List searchBreadthFirst() { + public List bypassBreadthFirst() { List list = new ArrayList<>(); Queue> queue = new ArrayDeque<>(); queue.add(root); @@ -68,8 +64,12 @@ public List searchBreadthFirst() { } public void balance() { - List list = searchPreorder(); - list.sort(comparator == null ? (Comparator) Comparator.naturalOrder() : comparator); + List list = bypassPreorder(); + + Comparator comparator1 = (comparator != null) + ? comparator + : (Comparator) Comparator.naturalOrder(); + list.sort(comparator1); int middle = list.size() / 2; root = new Node<>(list.get(middle)); @@ -89,13 +89,13 @@ private void balance(List list, int low, int high) { } } - private void searchPreorder(Node node, List list) { + private void bypassPreorder(Node node, List list) { list.add(node.value); if (node.left != null) { - searchPreorder(node.left, list); + bypassPreorder(node.left, list); } if (node.right != null) { - searchPreorder(node.right, list); + bypassPreorder(node.right, list); } } @@ -103,10 +103,17 @@ private Node add(E el, Node node) { int compareResult = compare(el, node.value); if (compareResult > 0) { - return node.right == null ? node.right = new Node<>(el, node) : add(el, node.right); - } else { - return node.left == null ? node.left = new Node<>(el, node) : add(el, node.left); + if (node.right == null) { + return node.right = new Node<>(el, node); + } + return add(el, node.right); } + + if (node.left == null) { + return node.left = new Node<>(el, node); + } + return add(el, node.left); + } private Node delete(E el, Node node) { @@ -117,28 +124,23 @@ private Node delete(E el, Node node) { node.right = delete(el, node.right); } else if (compareResult < 0) { node.left = delete(el, node.left); + } else if (node.right != null && node.left != null) { + Node max = findMax(node.left); + node.value = max.value; + delete(max.value, max.parent); + } else if (node.left != null) { + result = node.left.parent = node.parent; + } else if (node.right != null) { + result = node.right.parent = node.parent; } else { - if (node.right != null && node.left != null) { - Node max = findMax(node.left); - node.value = max.value; - delete(max.value, max.parent); - } else if (node.left != null) { - result = node.left.parent = node.parent; - } else if (node.right != null) { - result = node.right.parent = node.parent; - } else { - result = null; - } + result = null; } + return result; } private Node findMax(Node node) { - if (node.right == null) { - return node; - } else { - return findMax(node.right); - } + return (node.right == null) ? node : findMax(node.right); } private int compare(E el1, E el2) { From d4dceea5d143a3c18defa67739a469a5fb99f4aa Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 27 Nov 2025 15:05:05 +0300 Subject: [PATCH 121/131] lesson 42? task 2 --- .../lesson42_tree/task1/tree/BinaryTree.java | 1 - src/com/walking/lesson42_tree/task2/Main.java | 23 +++ .../lesson42_tree/task2/tree/AVLTree.java | 163 ++++++++++++++++++ 3 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 src/com/walking/lesson42_tree/task2/tree/AVLTree.java diff --git a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java index a8adff7c5..5ce9214b9 100644 --- a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java +++ b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java @@ -113,7 +113,6 @@ private Node add(E el, Node node) { return node.left = new Node<>(el, node); } return add(el, node.left); - } private Node delete(E el, Node node) { diff --git a/src/com/walking/lesson42_tree/task2/Main.java b/src/com/walking/lesson42_tree/task2/Main.java index fd124a35a..3970a039f 100644 --- a/src/com/walking/lesson42_tree/task2/Main.java +++ b/src/com/walking/lesson42_tree/task2/Main.java @@ -1,5 +1,7 @@ package com.walking.lesson42_tree.task2; +import com.walking.lesson42_tree.task2.tree.AVLTree; + /** * Реализуйте АВЛ-дерево. * Сопроводите действия по добавлению (и последующей балансировке) @@ -7,5 +9,26 @@ */ public class Main { public static void main(String[] args) { + AVLTree numbs = new AVLTree<>(); + numbs.add(32); + numbs.add(46); + numbs.add(17); + numbs.add(10); + numbs.add(23); + numbs.add(56); + numbs.add(54); + numbs.add(55); + numbs.add(47); + numbs.add(73); + numbs.add(64); + + System.out.println(numbs.bypassPreorder()); + + numbs.delete(56); + System.out.println(numbs.bypassPreorder()); + numbs.delete(47); + System.out.println(numbs.bypassPreorder()); + numbs.delete(12); + System.out.println(numbs.bypassPreorder()); } } diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java new file mode 100644 index 000000000..698f6e07f --- /dev/null +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -0,0 +1,163 @@ +package com.walking.lesson42_tree.task2.tree; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +public class AVLTree { + private Node root; + private Comparator comparator; + + public AVLTree() { + } + + public AVLTree(Comparator comparator) { + this.comparator = comparator; + } + + public boolean isEmpty() { + return root == null; + } + + public void add(E el) { + if (isEmpty()) { + root = new Node<>(el); + } else { + root = add(el, root); + } + } + + public void delete(E el) { + if (!isEmpty()) { + delete(el, root); + } + } + + public List bypassPreorder() { + List list = new ArrayList<>(); + bypassPreorder(root, list); + return list; + } + + private void bypassPreorder(Node node, List list) { + list.add(node.value); + if (node.left != null) { + bypassPreorder(node.left, list); + } + if (node.right != null) { + bypassPreorder(node.right, list); + } + } + + private Node delete(E el, Node node) { + if (node == null) { + return null; + } + + int compareResult = compare(el, node.value); + + if (compareResult > 0) { + node.right = delete(el, node.right); + } else if (compareResult < 0) { + node.left = delete(el, node.left); + } else { + Node l = node.left; + Node r = node.right; + if (l == null) { + return r; + } else if (r == null) { + return l; + } + Node max = findMax(node.left); + max.left = delete(max.value, node.left); + max.right = r; + return balance(max); + } + return balance(node); + } + + private Node findMax(Node node) { + return (node.right == null) ? node : findMax(node.right); + } + + private Node add(E el, Node node) { + if (node == null) { + return new Node<>(el); + } + int compareResult = compare(el, node.value); + if (compareResult > 0) { + node.right = add(el, node.right); + } else { + node.left = add(el, node.left); + } + return balance(node); + } + + private Node balance(Node node) { + fixHeight(node); + if (getBalanceFactor(node) == 2) { + if (getBalanceFactor(node.left) < 0) { + node.left = rotateLeft(node.left); + } + return rotateRight(node); + } + + if (getBalanceFactor(node) == -2) { + if (getBalanceFactor(node.right) > 0) { + node.right = rotateRight(node.right); + } + return rotateLeft(node); + } + return node; + } + + private Node rotateRight(Node node) { + Node node1 = node.left; + node.left = node1.right; + node1.right = node; + fixHeight(node); + fixHeight(node1); + return node1; + } + + private Node rotateLeft(Node node) { + Node node1 = node.right; + node.right = node1.left; + node1.left = node; + fixHeight(node); + fixHeight(node1); + return node1; + } + + private int getBalanceFactor(Node node) { + return getHeight(node.left) - getHeight(node.right); + } + + private void fixHeight(Node node) { + int leftHeight = getHeight(node.left); + int rightHeight = getHeight(node.right); + node.height = (leftHeight > rightHeight) ? leftHeight + 1 : rightHeight + 1; + } + + private int getHeight(Node node) { + return node == null ? 0 : node.height; + } + + private int compare(E el1, E el2) { + return comparator == null + ? ((Comparable) el1).compareTo(el2) + : comparator.compare(el1, el2); + } + + private static class Node { + private E value; + private int height; + Node left; + Node right; + + private Node(E value) { + this.value = value; + this.height = 1; + } + } +} From 8e21b5eba020daade5170b7d366ff8bdbf5b6f77 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 27 Nov 2025 15:18:31 +0300 Subject: [PATCH 122/131] lesson 42, task 2 --- src/com/walking/lesson42_tree/task2/tree/AVLTree.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java index 698f6e07f..2eca5d221 100644 --- a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -25,11 +25,13 @@ public void add(E el) { } else { root = add(el, root); } + System.out.printf("Элемент %s был добавлен\n", el); } public void delete(E el) { if (!isEmpty()) { delete(el, root); + System.out.printf("Элемент %s был удалён\n", el); } } From e8b9bf183e932416614e028d4ba6e1593ac264af Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 27 Nov 2025 15:19:38 +0300 Subject: [PATCH 123/131] lesson 42, task 2 --- src/com/walking/lesson42_tree/task2/tree/AVLTree.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java index 2eca5d221..442522482 100644 --- a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -152,7 +152,7 @@ private int compare(E el1, E el2) { } private static class Node { - private E value; + private final E value; private int height; Node left; Node right; From ea31149d8e8f271025e02abeda581839261f096b Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 27 Nov 2025 19:07:34 +0300 Subject: [PATCH 124/131] lesson 42, task 2 --- src/com/walking/lesson42_tree/task2/Main.java | 6 +----- src/com/walking/lesson42_tree/task2/tree/AVLTree.java | 5 ++++- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/com/walking/lesson42_tree/task2/Main.java b/src/com/walking/lesson42_tree/task2/Main.java index 3970a039f..16ee152b4 100644 --- a/src/com/walking/lesson42_tree/task2/Main.java +++ b/src/com/walking/lesson42_tree/task2/Main.java @@ -24,11 +24,7 @@ public static void main(String[] args) { System.out.println(numbs.bypassPreorder()); - numbs.delete(56); - System.out.println(numbs.bypassPreorder()); - numbs.delete(47); - System.out.println(numbs.bypassPreorder()); - numbs.delete(12); + numbs.delete(54); System.out.println(numbs.bypassPreorder()); } } diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java index 442522482..b6f5b4b5d 100644 --- a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -30,7 +30,10 @@ public void add(E el) { public void delete(E el) { if (!isEmpty()) { - delete(el, root); + Node n = delete(el, root); + if (el == root.value) { + root = n; + } System.out.printf("Элемент %s был удалён\n", el); } } From 4b56e7c8238a2e7cea88b230c0c32259103df1b5 Mon Sep 17 00:00:00 2001 From: Rita Date: Thu, 27 Nov 2025 19:08:51 +0300 Subject: [PATCH 125/131] lesson 42, task 2 --- src/com/walking/lesson42_tree/task2/Main.java | 2 +- src/com/walking/lesson42_tree/task2/tree/AVLTree.java | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/com/walking/lesson42_tree/task2/Main.java b/src/com/walking/lesson42_tree/task2/Main.java index 16ee152b4..278defd7c 100644 --- a/src/com/walking/lesson42_tree/task2/Main.java +++ b/src/com/walking/lesson42_tree/task2/Main.java @@ -24,7 +24,7 @@ public static void main(String[] args) { System.out.println(numbs.bypassPreorder()); - numbs.delete(54); + numbs.delete(46); System.out.println(numbs.bypassPreorder()); } } diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java index b6f5b4b5d..caf4b4378 100644 --- a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -30,10 +30,7 @@ public void add(E el) { public void delete(E el) { if (!isEmpty()) { - Node n = delete(el, root); - if (el == root.value) { - root = n; - } + root = delete(el, root); System.out.printf("Элемент %s был удалён\n", el); } } From 3afdfc2ed007e62d5f68a635e4e09d0ff5ae5686 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 1 Dec 2025 16:47:34 +0300 Subject: [PATCH 126/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lesson42_tree/task1/tree/BinaryTree.java | 2 +- src/com/walking/lesson42_tree/task2/Main.java | 2 ++ .../lesson42_tree/task2/tree/AVLTree.java | 23 +++++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java index 5ce9214b9..e19ea7f0f 100644 --- a/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java +++ b/src/com/walking/lesson42_tree/task1/tree/BinaryTree.java @@ -139,7 +139,7 @@ private Node delete(E el, Node node) { } private Node findMax(Node node) { - return (node.right == null) ? node : findMax(node.right); + return node.right == null ? node : findMax(node.right); } private int compare(E el1, E el2) { diff --git a/src/com/walking/lesson42_tree/task2/Main.java b/src/com/walking/lesson42_tree/task2/Main.java index 278defd7c..e8ea37fc6 100644 --- a/src/com/walking/lesson42_tree/task2/Main.java +++ b/src/com/walking/lesson42_tree/task2/Main.java @@ -25,6 +25,8 @@ public static void main(String[] args) { System.out.println(numbs.bypassPreorder()); numbs.delete(46); + numbs.delete(12); + numbs.delete(54); System.out.println(numbs.bypassPreorder()); } } diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java index caf4b4378..1feb5889c 100644 --- a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -1,5 +1,6 @@ package com.walking.lesson42_tree.task2.tree; +import java.sql.SQLOutput; import java.util.ArrayList; import java.util.Comparator; import java.util.List; @@ -21,17 +22,19 @@ public boolean isEmpty() { public void add(E el) { if (isEmpty()) { + compare(el, el); root = new Node<>(el); } else { root = add(el, root); } - System.out.printf("Элемент %s был добавлен\n", el); + System.out.printf("Элемент %s был добавлен.\n", el); } public void delete(E el) { if (!isEmpty()) { root = delete(el, root); - System.out.printf("Элемент %s был удалён\n", el); + } else { + System.out.println("В дереве отсутствуют элементы."); } } @@ -53,6 +56,7 @@ private void bypassPreorder(Node node, List list) { private Node delete(E el, Node node) { if (node == null) { + System.out.printf("Элемент %s не найден.\n", el); return null; } @@ -65,21 +69,30 @@ private Node delete(E el, Node node) { } else { Node l = node.left; Node r = node.right; + System.out.printf("Элемент был %s удалён.\n", el); if (l == null) { return r; } else if (r == null) { return l; } Node max = findMax(node.left); - max.left = delete(max.value, node.left); + max.left = removeMax(node.left); max.right = r; return balance(max); } return balance(node); } + private Node removeMax(Node node) { + if (node.right == null) { + return node.left; + } + node.right = removeMax(node.right); + return balance(node); + } + private Node findMax(Node node) { - return (node.right == null) ? node : findMax(node.right); + return node.right == null ? node : findMax(node.right); } private Node add(E el, Node node) { @@ -138,7 +151,7 @@ private int getBalanceFactor(Node node) { private void fixHeight(Node node) { int leftHeight = getHeight(node.left); int rightHeight = getHeight(node.right); - node.height = (leftHeight > rightHeight) ? leftHeight + 1 : rightHeight + 1; + node.height = Math.max(leftHeight, rightHeight) + 1; } private int getHeight(Node node) { From 30c91193848fb976983bdbaf9c959052f59e2fdf Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 1 Dec 2025 16:47:53 +0300 Subject: [PATCH 127/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson42_tree/task2/tree/AVLTree.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java index 1feb5889c..c4fd3a5df 100644 --- a/src/com/walking/lesson42_tree/task2/tree/AVLTree.java +++ b/src/com/walking/lesson42_tree/task2/tree/AVLTree.java @@ -1,6 +1,5 @@ package com.walking.lesson42_tree.task2.tree; -import java.sql.SQLOutput; import java.util.ArrayList; import java.util.Comparator; import java.util.List; From 8bc36d070c6dfd5b19e23c558a1282dc51327dc4 Mon Sep 17 00:00:00 2001 From: Rita Date: Tue, 9 Dec 2025 15:04:23 +0300 Subject: [PATCH 128/131] 43, 1 --- src/com/walking/lesson43_map/task1/Main.java | 60 +++++++++++++++++++ .../task1/exception/InvalidWordException.java | 7 +++ 2 files changed, 67 insertions(+) create mode 100644 src/com/walking/lesson43_map/task1/exception/InvalidWordException.java diff --git a/src/com/walking/lesson43_map/task1/Main.java b/src/com/walking/lesson43_map/task1/Main.java index a44e5254b..4756b48bb 100644 --- a/src/com/walking/lesson43_map/task1/Main.java +++ b/src/com/walking/lesson43_map/task1/Main.java @@ -1,5 +1,10 @@ package com.walking.lesson43_map.task1; +import com.walking.lesson30_regex.task3.exception.InvalidWordException; + +import java.util.HashMap; +import java.util.Scanner; + /** * Реализуйте программу, выводящую в консоль количество использований каждого слова во введенной пользователем строке. *

@@ -7,6 +12,61 @@ * .... */ public class Main { + private static final String WORD = "[а-яa-z]+"; + private static final String WORD_WITH_HYPHENS = "[а-яa-z][а-яa-z-]+[а-яa-z]"; + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Введите фразу: "); + String phrase = in.nextLine() + .trim() + .toLowerCase(); + + var words = getWordsMap(phrase); + System.out.println(words); + + } + + private static HashMap getWordsMap(String phrase) { + String[] words = splitPhrase(phrase); + validateWords(words); + + var wordsMap = new HashMap(); + for (String word : words) { + putElement(wordsMap, word); + } + + return wordsMap; + } + + private static void putElement(HashMap map, String key) { + Integer amount = map.put(key, 1); + if (amount != null) { + map.replace(key, amount + 1); + } + } + + private static void validateWords(String[] words) { + for (String word : words) { + if (!isWordValid(word)) { + throw new InvalidWordException("Некорректное слово: " + word); + } + } + } + + private static boolean isWordValid(String word) { + if (!word.contains("-")) { + return word.matches(WORD); + } + + if (word.matches("^.*--+.*$")) { + return false; + } + + return word.matches(WORD_WITH_HYPHENS); + } + + private static String[] splitPhrase(String phrase) { + return phrase.split("\\s+"); } } diff --git a/src/com/walking/lesson43_map/task1/exception/InvalidWordException.java b/src/com/walking/lesson43_map/task1/exception/InvalidWordException.java new file mode 100644 index 000000000..48670e91e --- /dev/null +++ b/src/com/walking/lesson43_map/task1/exception/InvalidWordException.java @@ -0,0 +1,7 @@ +package com.walking.lesson43_map.task1.exception; + +public class InvalidWordException extends RuntimeException { + public InvalidWordException(String message) { + super(message); + } +} From ed02488bf935bc9dea32d5087d1515c14ec15939 Mon Sep 17 00:00:00 2001 From: Rita Date: Wed, 10 Dec 2025 18:08:59 +0300 Subject: [PATCH 129/131] 43, 2 --- src/com/walking/lesson43_map/task2/Main.java | 34 ++++++++++++ .../walking/lesson43_map/task2/model/Car.java | 51 +++++++++++++++++ .../task2/model/CarIdentifier.java | 55 +++++++++++++++++++ .../task2/service/CarService.java | 34 ++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 src/com/walking/lesson43_map/task2/model/Car.java create mode 100644 src/com/walking/lesson43_map/task2/model/CarIdentifier.java create mode 100644 src/com/walking/lesson43_map/task2/service/CarService.java diff --git a/src/com/walking/lesson43_map/task2/Main.java b/src/com/walking/lesson43_map/task2/Main.java index 77e92e40d..0abfc8172 100644 --- a/src/com/walking/lesson43_map/task2/Main.java +++ b/src/com/walking/lesson43_map/task2/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson43_map.task2; + +import com.walking.lesson43_map.task2.model.Car; +import com.walking.lesson43_map.task2.model.CarIdentifier; +import com.walking.lesson43_map.task2.service.CarService; + +import java.util.Scanner; + /** * Реализуйте задачу * ..., @@ -8,5 +15,32 @@ */ public class Main { public static void main(String[] args) { + CarService service = createCarsMap(); + + Scanner in = new Scanner(System.in); + System.out.print("Марка машины: "); + String brand = in.nextLine(); + System.out.print("Номер машины: "); + String number = in.nextLine(); + + CarIdentifier identifier = new CarIdentifier(number, brand); + Car car = service.get(identifier); + if (car == null) { + System.out.println("Машина не найдена!"); + } else { + System.out.println(car.getInfo()); + } + } + + public static CarService createCarsMap() { + CarService carService = new CarService(); + carService.put(new Car("Audi","уе777к", "Печкин Ф.Б.", "синий")); + carService.put(new Car("Ford","ос025р", "Борисов Ю.А.", "красный")); + carService.put(new Car("BMW","мр666м", "Снегирь Ю.В.", "чёрный")); + carService.put(new Car("BMW","ра345з", "Сергеев К.Л.", "чёрный")); + carService.put(new Car("Москвич","кв865а", "Васильев П.Д.", "белый")); + carService.put(new Car("Audi","ау000ш", "Алексеев Л.Б.", "серый")); + carService.put(new Car("Audi","уе777к", "Печкин Ф.Б.", "жёлтый")); + return carService; } } diff --git a/src/com/walking/lesson43_map/task2/model/Car.java b/src/com/walking/lesson43_map/task2/model/Car.java new file mode 100644 index 000000000..554a28837 --- /dev/null +++ b/src/com/walking/lesson43_map/task2/model/Car.java @@ -0,0 +1,51 @@ +package com.walking.lesson43_map.task2.model; + +public class Car { + private final CarIdentifier identifier; + private String owner; + private String color; + + public Car(CarIdentifier identifier) { + this.identifier = identifier; + } + + public Car(CarIdentifier identifier, String owner, String color) { + this.identifier = identifier; + this.owner = owner; + this.color = color; + } + + public Car(String brand, String number, String owner, String color) { + this.identifier = new CarIdentifier(number, brand); + this.owner = owner; + this.color = color; + } + + public String getInfo() { + return "Машина марки %s, номер: %s, цвет: %s, владелец: %s" + .formatted(identifier.getBrand(), + identifier.getNumber(), + color, + owner); + } + + public CarIdentifier getIdentifier() { + return identifier; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/src/com/walking/lesson43_map/task2/model/CarIdentifier.java b/src/com/walking/lesson43_map/task2/model/CarIdentifier.java new file mode 100644 index 000000000..aa85263f5 --- /dev/null +++ b/src/com/walking/lesson43_map/task2/model/CarIdentifier.java @@ -0,0 +1,55 @@ +package com.walking.lesson43_map.task2.model; + +public class CarIdentifier implements Comparable { + private final String number; + private final String brand; + + public CarIdentifier(String number, String brand) { + this.number = number; + this.brand = brand; + } + + @Override + public int compareTo(CarIdentifier o) { + int result = brand.compareTo(o.brand); + if (result == 0) { + result = number.compareTo(o.number); + } + return result; + } + + @Override + public boolean equals(Object car) { + if (this == car) { + return true; + } + + if (car == null) { + return false; + } + + if (!getClass().equals(car.getClass())) { + return false; + } + + CarIdentifier c = (CarIdentifier) car; + + return number.equals(c.number) && brand.equals(c.brand); + } + + @Override + public int hashCode() { + int result = brand != null ? brand.hashCode() : 0; + result *= 31 + (number != null ? number.hashCode() : 0); + + return result; + } + + public String getBrand() { + return brand; + } + + public String getNumber() { + return number; + } +} diff --git a/src/com/walking/lesson43_map/task2/service/CarService.java b/src/com/walking/lesson43_map/task2/service/CarService.java new file mode 100644 index 000000000..322be5551 --- /dev/null +++ b/src/com/walking/lesson43_map/task2/service/CarService.java @@ -0,0 +1,34 @@ +package com.walking.lesson43_map.task2.service; + +import com.walking.lesson43_map.task2.model.Car; +import com.walking.lesson43_map.task2.model.CarIdentifier; + +import java.util.HashMap; + +public class CarService { + private final HashMap carMap; + + public CarService() { + this.carMap = new HashMap<>(); + } + + public CarService(HashMap carMap) { + this.carMap = carMap; + } + + public Car put(Car car) { + return carMap.put(car.getIdentifier(), car); + } + + public Car remove(Car car) { + return carMap.remove(car.getIdentifier()); + } + + public Car get(CarIdentifier identifier) { + return carMap.get(identifier); + } + + public HashMap getCarMap() { + return carMap; + } +} From 8e7108e39a4cc230d0ab402283f099219a89f05c Mon Sep 17 00:00:00 2001 From: Rita Date: Sat, 3 Jan 2026 13:53:49 +0300 Subject: [PATCH 130/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson43_map/task1/Main.java | 9 ++++----- .../lesson43_map/task2/service/CarService.java | 11 ++++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/com/walking/lesson43_map/task1/Main.java b/src/com/walking/lesson43_map/task1/Main.java index 4756b48bb..c1560f2b0 100644 --- a/src/com/walking/lesson43_map/task1/Main.java +++ b/src/com/walking/lesson43_map/task1/Main.java @@ -3,6 +3,7 @@ import com.walking.lesson30_regex.task3.exception.InvalidWordException; import java.util.HashMap; +import java.util.Map; import java.util.Scanner; /** @@ -27,7 +28,7 @@ public static void main(String[] args) { } - private static HashMap getWordsMap(String phrase) { + private static Map getWordsMap(String phrase) { String[] words = splitPhrase(phrase); validateWords(words); @@ -40,10 +41,8 @@ private static HashMap getWordsMap(String phrase) { } private static void putElement(HashMap map, String key) { - Integer amount = map.put(key, 1); - if (amount != null) { - map.replace(key, amount + 1); - } + Integer amount = map.getOrDefault(key, 0); + map.put(key, amount + 1); } private static void validateWords(String[] words) { diff --git a/src/com/walking/lesson43_map/task2/service/CarService.java b/src/com/walking/lesson43_map/task2/service/CarService.java index 322be5551..7c46552fa 100644 --- a/src/com/walking/lesson43_map/task2/service/CarService.java +++ b/src/com/walking/lesson43_map/task2/service/CarService.java @@ -4,16 +4,17 @@ import com.walking.lesson43_map.task2.model.CarIdentifier; import java.util.HashMap; +import java.util.Map; public class CarService { - private final HashMap carMap; + private final Map carMap; public CarService() { this.carMap = new HashMap<>(); } - public CarService(HashMap carMap) { - this.carMap = carMap; + public CarService(Map carMap) { + this.carMap = Map.copyOf(carMap); } public Car put(Car car) { @@ -28,7 +29,7 @@ public Car get(CarIdentifier identifier) { return carMap.get(identifier); } - public HashMap getCarMap() { - return carMap; + public Map getCarMap() { + return Map.copyOf(carMap); } } From a421b6bee2bea54e214d9377454c65249f1cb848 Mon Sep 17 00:00:00 2001 From: Rita Date: Mon, 12 Jan 2026 16:57:21 +0300 Subject: [PATCH 131/131] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/walking/lesson43_map/task2/Main.java | 4 +++- src/com/walking/lesson43_map/task2/service/CarService.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/walking/lesson43_map/task2/Main.java b/src/com/walking/lesson43_map/task2/Main.java index 0abfc8172..46e955545 100644 --- a/src/com/walking/lesson43_map/task2/Main.java +++ b/src/com/walking/lesson43_map/task2/Main.java @@ -16,6 +16,8 @@ public class Main { public static void main(String[] args) { CarService service = createCarsMap(); + CarService service2 = new CarService(service.getCarMap()); + service2.put(new Car("Audi", "кр333о", "Савельев П.Б.", "синий")); Scanner in = new Scanner(System.in); System.out.print("Марка машины: "); @@ -24,7 +26,7 @@ public static void main(String[] args) { String number = in.nextLine(); CarIdentifier identifier = new CarIdentifier(number, brand); - Car car = service.get(identifier); + Car car = service2.get(identifier); if (car == null) { System.out.println("Машина не найдена!"); } else { diff --git a/src/com/walking/lesson43_map/task2/service/CarService.java b/src/com/walking/lesson43_map/task2/service/CarService.java index 7c46552fa..9eebc243d 100644 --- a/src/com/walking/lesson43_map/task2/service/CarService.java +++ b/src/com/walking/lesson43_map/task2/service/CarService.java @@ -14,7 +14,7 @@ public CarService() { } public CarService(Map carMap) { - this.carMap = Map.copyOf(carMap); + this.carMap = new HashMap<>(carMap); } public Car put(Car car) {