diff --git a/src/com/walking/lesson14_polymorphism/task1/Main.java b/src/com/walking/lesson14_polymorphism/task1/Main.java index 41022d7f2..e4ee4acbf 100644 --- a/src/com/walking/lesson14_polymorphism/task1/Main.java +++ b/src/com/walking/lesson14_polymorphism/task1/Main.java @@ -1,16 +1,46 @@ 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; + /** * Реализуйте класс «Правильная фигура». * Для него создайте классы-наследники «Треугольник» и «Квадрат». *
- * Пользователь должен иметь возможность ввести длину стороны и выбрать тип фигуры. - * Программа должна нарисовать в консоли выбранную пользователем фигуру, - * используя символы '-', '|', '/', '\'. + * Пользователь должен иметь возможность ввести длину стороны и выбрать тип фигуры. + * Программа должна нарисовать в консоли выбранную пользователем фигуру, + * используя символы '-', '|', '/', '\'. *
* Обратите внимание, символ '\' в Java необходимо экранировать: '\\'. */ + public class Main { - public static void main(String[] args) { + + 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 = getFigure(figureType, length); + + System.out.println(figure.getFigure()); + } + + private static RegularFigure getFigure(String figureType, int 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 new file mode 100644 index 000000000..2b8a21022 --- /dev/null +++ b/src/com/walking/lesson14_polymorphism/task1/figure/RegularFigure.java @@ -0,0 +1,18 @@ +package com.walking.lesson14_polymorphism.task1.figure; + +public class RegularFigure { + private final int length; + + public RegularFigure(int length) { + this.length = length; + } + + public String getFigure() { + return "Неизвестная фигура"; + } + + + 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 new file mode 100644 index 000000000..003fcfcc0 --- /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 < getLength() - 2; i++) { + square += getVerticalSide(); + } + return square + getHorizontalSide(); + } + + private String getHorizontalSide() { + return SPACE + HORIZONTAL.repeat(getLength() - 2) + SPACE + "\n"; + } + + private String getVerticalSide() { + 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 new file mode 100644 index 000000000..7be11199a --- /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(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 + "\n"; + k--; + j += 2; + } + + return triangle; + } + +} 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..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 @@ -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,23 @@ */ 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 -> new Triangle(length); + case Square.NAME -> new Square(length); + default -> 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..177f8fa95 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task1_abstract_class/figures/RegularFigure.java @@ -0,0 +1,17 @@ +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"; + 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/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..0a15ce1f4 --- /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 < 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/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..af4bd897e --- /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(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; + } +} 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 "Неизвестная фигура"; + } +} 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..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,6 +1,5 @@ package com.walking.lesson16_abstract_class_interface.task1_interface; - /** * Реализуйте задачу * ... @@ -8,5 +7,7 @@ */ public class Main { public static void main(String[] args) { + } + } 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..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,5 +1,9 @@ package com.walking.lesson16_abstract_class_interface.task2; +import com.walking.lesson16_abstract_class_interface.task2.greet.*; + +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("Enter message: "); + String message = in.nextLine(); + + System.out.println(getGreeting(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/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/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"; + } +} 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..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; + /** * Реализуйте любую задачу из уроков о наследовании или полиморфизме с использованием новых знаний. * Выбирайте инструмент с умом. @@ -10,5 +15,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(); + } } } 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/animals/Cat.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cat.java new file mode 100644 index 000000000..64a0e5287 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cat.java @@ -0,0 +1,11 @@ +package com.walking.lesson16_abstract_class_interface.task3.animals; + +public class Cat extends Animal { + private final String SOUND = "meow"; + + + public void sound() { + System.out.println(SOUND); + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cow.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cow.java new file mode 100644 index 000000000..76e5d2c03 --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Cow.java @@ -0,0 +1,11 @@ +package com.walking.lesson16_abstract_class_interface.task3.animals; + +public class Cow extends Animal { + private final String SOUND = "moo"; + + + public void sound() { + System.out.println(SOUND); + } + +} diff --git a/src/com/walking/lesson16_abstract_class_interface/task3/animals/Dog.java b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Dog.java new file mode 100644 index 000000000..eb9cd229a --- /dev/null +++ b/src/com/walking/lesson16_abstract_class_interface/task3/animals/Dog.java @@ -0,0 +1,11 @@ +package com.walking.lesson16_abstract_class_interface.task3.animals; + +public class Dog extends Animal { + private final String SOUND = "woof"; + + + public void sound() { + System.out.println(SOUND); + } + +} diff --git a/src/com/walking/lesson17_enum/task1/Main.java b/src/com/walking/lesson17_enum/task1/Main.java index 7fc684202..8c028c396 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.GreetingType; + +import java.util.Scanner; + + + /** * Реализуйте задачу * ... @@ -8,5 +14,12 @@ */ public class Main { public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Enter message: "); + String greeting = in.nextLine(); + + GreetingType greet = GreetingType.findGreetingType(greeting); + System.out.println(greet.getRespond()); + } } diff --git a/src/com/walking/lesson17_enum/task1/greetings/GreetingType.java b/src/com/walking/lesson17_enum/task1/greetings/GreetingType.java new file mode 100644 index 000000000..4d124f6f5 --- /dev/null +++ b/src/com/walking/lesson17_enum/task1/greetings/GreetingType.java @@ -0,0 +1,38 @@ +package com.walking.lesson17_enum.task1.greetings; + +public enum GreetingType { + + HELLO("Hi", "Hello"), + GOODBYE("Bye", "Goodbye"), + HOW("How are you", "How are you doing"), + UNKNOWN(null, "Unknown message"); + + private final String greeting; + private final String respond; + + GreetingType(String greeting, String respond) { + this.greeting = greeting; + this.respond = respond; + } + + public static GreetingType findGreetingType(String greeting) { + if (greeting == null) { + return UNKNOWN; + } + + for (GreetingType type : GreetingType.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/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 new file mode 100644 index 000000000..9c9e1c650 --- /dev/null +++ b/src/com/walking/lesson17_enum/task2/animals/Animal.java @@ -0,0 +1,17 @@ +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; + } +} diff --git a/src/com/walking/lesson17_enum/task3/Main.java b/src/com/walking/lesson17_enum/task3/Main.java index fb541e003..135289954 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,14 @@ */ 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); + 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 new file mode 100644 index 000000000..fc663143c --- /dev/null +++ b/src/com/walking/lesson17_enum/task3/figure/RegularFigure.java @@ -0,0 +1,75 @@ +package com.walking.lesson17_enum.task3.figure; + + +public enum RegularFigure { + TRIANGLE("треугольник"){ + @Override + public String getFigure(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_TRIANGLE + SPACE.repeat(j) + RIGHT_SIDE_TRIANGLE + NEXT_LINE; + k--; + j += 2; + } + + triangle += LEFT_SIDE_TRIANGLE + HORIZONTAL_SIDE.repeat(length) + RIGHT_SIDE_TRIANGLE; + return triangle; + } + }, + + SQUARE("квадрат") { + @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(length - 2) + SPACE + NEXT_LINE; + return square; + } + }, + + UNKNOWN(null) { + @Override + public String getFigure(int length) { + return "Неизвестная фигура"; + } + }; + + private static final String SPACE = " "; + 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 = "|"; + + private final String name; + + 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 String getName() { + return name; + } + + public abstract String getFigure(int length); +} 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..12e59fc96 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,17 @@ */ public class Main { public static void main(String[] args) { + 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(); + } else if (animal.getClass().equals(Dog.class)) { + ((Dog) animal).woof(); + } else if (animal.getClass().equals(Cow.class)) { + ((Cow) animal).moo(); + } else { + System.out.println("Unknown animal"); + } + } } } 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..ed2965c2f --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Animal.java @@ -0,0 +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 new file mode 100644 index 000000000..b6769a6cd --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cat.java @@ -0,0 +1,12 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Cat extends Animal { + + public Cat() { + super("meow"); + } + + public void meow() { + 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 new file mode 100644 index 000000000..901f9873a --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Cow.java @@ -0,0 +1,12 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Cow extends Animal { + + public Cow() { + super("moo"); + } + + public void moo() { + 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 new file mode 100644 index 000000000..b8cde7296 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_getClass/animals/Dog.java @@ -0,0 +1,12 @@ +package com.walking.lesson18_instanceof_getClass.task1_getClass.animals; + +public class Dog extends Animal { + + public Dog() { + super("woof"); + } + + public void woof() { + 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 4f267a04b..494adc8d6 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,17 @@ */ public class Main { public static void main(String[] args) { + Animal[] animals = new Animal[]{new Cat(), new Cow(), new Dog(), new Cow()}; + for (Animal animal : animals) { + if (animal instanceof Cat cat) { + cat.meow(); + } else if (animal instanceof Dog dog) { + dog.woof(); + } else if (animal instanceof Cow cow) { + cow.moo(); + } 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 new file mode 100644 index 000000000..6fb102725 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Animal.java @@ -0,0 +1,13 @@ +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 new file mode 100644 index 000000000..170c1721c --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cat.java @@ -0,0 +1,12 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Cat extends Animal { + + public Cat() { + super("meow"); + } + + public void 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 new file mode 100644 index 000000000..b15f76922 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Cow.java @@ -0,0 +1,12 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Cow extends Animal { + + public Cow() { + super("moo"); + } + + public void 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 new file mode 100644 index 000000000..adf0bf9a2 --- /dev/null +++ b/src/com/walking/lesson18_instanceof_getClass/task1_instanceof/animals/Dog.java @@ -0,0 +1,12 @@ +package com.walking.lesson18_instanceof_getClass.task1_instanceof.animals; + +public class Dog extends Animal { + + public Dog() { + super("woof"); + } + + public void woof() { + System.out.println(sound); + } +} diff --git a/src/com/walking/lesson19_object_methods/Main.java b/src/com/walking/lesson19_object_methods/Main.java index efef54d5d..9f4d4e213 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.car.Car; + +import java.util.Scanner; + /** * Реализуйте класс «Машина». Поля допустимо выбрать на свое усмотрение, но необходимо, * чтобы по ним можно было однозначно идентифицировать каждую машину. @@ -14,5 +18,39 @@ */ 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 make = in.nextLine(); + System.out.print("ФИО владельца: "); + String owner = in.nextLine(); + System.out.print("Номер машины: "); + String number = in.nextLine(); + + Car car = new Car(make, owner, number); + + if (!isCarExist(cars, car)) { + System.out.println("Машина не найдена!"); + } else { + System.out.println(car); + System.out.println(car.hashCode()); + } + } + + public static boolean isCarExist(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/car/Car.java b/src/com/walking/lesson19_object_methods/car/Car.java new file mode 100644 index 000000000..4ca932046 --- /dev/null +++ b/src/com/walking/lesson19_object_methods/car/Car.java @@ -0,0 +1,58 @@ +package com.walking.lesson19_object_methods.car; + +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; + } + + public final String getBrand() { + return brand; + } + + public final String getOwner() { + return owner; + } + + public final String getNumber() { + return number; + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_catchException/Main.java b/src/com/walking/lesson20_exceptions/task1_catchException/Main.java index c59fa62d4..a0a8454b1 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.file.File; + +import java.io.FileNotFoundException; +import java.util.Scanner; + +import static com.walking.lesson20_exceptions.task1_catchException.file.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/file/File.java b/src/com/walking/lesson20_exceptions/task1_catchException/file/File.java new file mode 100644 index 000000000..383eec687 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/file/File.java @@ -0,0 +1,30 @@ +package com.walking.lesson20_exceptions.task1_catchException.file; + +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/file/FileType.java b/src/com/walking/lesson20_exceptions/task1_catchException/file/FileType.java new file mode 100644 index 000000000..2df950d41 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_catchException/file/FileType.java @@ -0,0 +1,18 @@ +package com.walking.lesson20_exceptions.task1_catchException.file; + +public enum FileType { + TEXT("текст"), + VIDEO("видеозапись"), + AUDIO("аудиозапись"), + PICTURE("изображение"); + + private final String name; + + FileType(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java index 368d583c8..0a2463182 100644 --- a/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/Main.java @@ -1,5 +1,12 @@ package com.walking.lesson20_exceptions.task1_throwsException; +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.file.FileType.*; + /** * Создайте массив, имитирующий простейшую файловую систему и содержащий объекты файлов. *
@@ -16,6 +23,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/file/File.java b/src/com/walking/lesson20_exceptions/task1_throwsException/file/File.java new file mode 100644 index 000000000..97cdc29e6 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/file/File.java @@ -0,0 +1,30 @@ +package com.walking.lesson20_exceptions.task1_throwsException.file; + +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/file/FileType.java b/src/com/walking/lesson20_exceptions/task1_throwsException/file/FileType.java new file mode 100644 index 000000000..7a7c8996a --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task1_throwsException/file/FileType.java @@ -0,0 +1,18 @@ +package com.walking.lesson20_exceptions.task1_throwsException.file; + +public enum FileType { + TEXT("текст"), + VIDEO("видеозапись"), + AUDIO("аудиозапись"), + PICTURE("изображение"); + + private final String name; + + FileType(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/com/walking/lesson20_exceptions/task2/Main.java b/src/com/walking/lesson20_exceptions/task2/Main.java index cccb443bf..047ebc1f5 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.figure.RegularFigure; +import com.walking.lesson20_exceptions.task2.figure.Square; +import com.walking.lesson20_exceptions.task2.figure.Triangle; + +import java.util.Scanner; + /** * Реализуйте любой из вариантов Задачи 1 в уроке 16. * При некорректном вводе с клавиатуры выбрасывайте собственное исключение InputValidationException. @@ -8,6 +15,25 @@ * Предка исключения определите самостоятельно. */ 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("Введите длину стороны: "); + int length = in.nextInt(); + + if (length < 1) { + 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); + 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/figure/RegularFigure.java b/src/com/walking/lesson20_exceptions/task2/figure/RegularFigure.java new file mode 100644 index 000000000..56147dacd --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/figure/RegularFigure.java @@ -0,0 +1,17 @@ +package com.walking.lesson20_exceptions.task2.figure; + +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/figure/Square.java b/src/com/walking/lesson20_exceptions/task2/figure/Square.java new file mode 100644 index 000000000..9cad15c8d --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/figure/Square.java @@ -0,0 +1,29 @@ +package com.walking.lesson20_exceptions.task2.figure; + +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/figure/Triangle.java b/src/com/walking/lesson20_exceptions/task2/figure/Triangle.java new file mode 100644 index 000000000..66f8ef477 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task2/figure/Triangle.java @@ -0,0 +1,37 @@ +package com.walking.lesson20_exceptions.task2.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 = "_"; + + + 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; + } +} diff --git a/src/com/walking/lesson20_exceptions/task3/Main.java b/src/com/walking/lesson20_exceptions/task3/Main.java index 3b81b191c..263d81668 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.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. * Для ситуации, когда тип животного неизвестен, выбрасывайте собственное исключение UnknownAnimalException. @@ -10,6 +17,23 @@ * которое содержит информацию об индексе массива, содержащем 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}; + for (int i = 0; i < animals.length; i++) { + if (!isValid(animals[i])) { + throw new ArrayValidationException("Object is expected at index: " + i); + } + + 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"); + } + } + } + + public static boolean isValid(Animal animal) { + return animal != null; } } diff --git a/src/com/walking/lesson20_exceptions/task3/animal/Animal.java b/src/com/walking/lesson20_exceptions/task3/animal/Animal.java new file mode 100644 index 000000000..0488ca76a --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animal/Animal.java @@ -0,0 +1,13 @@ +package com.walking.lesson20_exceptions.task3.animal; + +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/animal/Cat.java b/src/com/walking/lesson20_exceptions/task3/animal/Cat.java new file mode 100644 index 000000000..37bc13d64 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animal/Cat.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task3.animal; + +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/animal/Cow.java b/src/com/walking/lesson20_exceptions/task3/animal/Cow.java new file mode 100644 index 000000000..b645420e1 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animal/Cow.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task3.animal; + +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/animal/Dog.java b/src/com/walking/lesson20_exceptions/task3/animal/Dog.java new file mode 100644 index 000000000..fd5022431 --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/animal/Dog.java @@ -0,0 +1,12 @@ +package com.walking.lesson20_exceptions.task3.animal; + +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/exception/ArrayValidationException.java b/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java new file mode 100644 index 000000000..329d7515b --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/exception/ArrayValidationException.java @@ -0,0 +1,8 @@ +package com.walking.lesson20_exceptions.task3.exception; + +public class ArrayValidationException extends RuntimeException { + public ArrayValidationException(String message) { + super(message); + } +} + diff --git a/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java b/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java new file mode 100644 index 000000000..ead86d85b --- /dev/null +++ b/src/com/walking/lesson20_exceptions/task3/exception/UnknownAnimalException.java @@ -0,0 +1,7 @@ +package com.walking.lesson20_exceptions.task3.exception; + +public class UnknownAnimalException extends RuntimeException { + public UnknownAnimalException(String message) { + super(message); + } +} diff --git a/src/com/walking/lesson21_immutable_object/Main.java b/src/com/walking/lesson21_immutable_object/Main.java index 6027e7453..17d9939b2 100644 --- a/src/com/walking/lesson21_immutable_object/Main.java +++ b/src/com/walking/lesson21_immutable_object/Main.java @@ -1,5 +1,11 @@ package com.walking.lesson21_immutable_object; +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; + /** * Реализуйте задачу из урока 19. *
@@ -10,5 +16,28 @@
*/
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();
+
+ Car car = new Car(new CarIdentifier(brand, number));
+ car = CarService.find(cars, car);
+
+ if (car == null) {
+ System.out.println("Машина не найдена!");
+ } else {
+ System.out.println(car);
+ }
}
}
diff --git a/src/com/walking/lesson21_immutable_object/car/Car.java b/src/com/walking/lesson21_immutable_object/car/Car.java
new file mode 100644
index 000000000..ce38198fd
--- /dev/null
+++ b/src/com/walking/lesson21_immutable_object/car/Car.java
@@ -0,0 +1,50 @@
+package com.walking.lesson21_immutable_object.car;
+
+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/lesson21_immutable_object/car/CarIdentifier.java b/src/com/walking/lesson21_immutable_object/car/CarIdentifier.java
new file mode 100644
index 000000000..51ed56339
--- /dev/null
+++ b/src/com/walking/lesson21_immutable_object/car/CarIdentifier.java
@@ -0,0 +1,47 @@
+package com.walking.lesson21_immutable_object.car;
+
+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;
+ }
+
+}
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..87721dbd5
--- /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 find(Car[] cars, Car car) {
+ for (Car c : cars) {
+ if (c.equals(car)) {
+ return c;
+ }
+ }
+ return null;
+ }
+}
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..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
@@ -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,65 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner in = new Scanner(System.in);
+ System.out.print("Введите тип фигуры: ");
+ String shape = in.nextLine();
+ System.out.print("Введите длину стороны: ");
+ int length = in.nextInt();
+
+ if (length < 1) {
+ System.out.println("Некорректный ввод");
+ return;
+ }
+
+ System.out.println(getResult(length, shape));
+ }
+
+ public static String getResult(int length, String shape) {
+ RegularFigure figure;
+
+ switch (shape.toLowerCase()) {
+ case "треугольник":
+ figure = getTriangle(length);
+ break;
+ case "квадрат":
+ figure = getSquare(length);
+ break;
+ default:
+ 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/anonymous_class/figure/RegularFigure.java b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java
new file mode 100644
index 000000000..71d8e2694
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task1/anonymous_class/figure/RegularFigure.java
@@ -0,0 +1,13 @@
+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();
+}
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..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
@@ -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,89 @@
*/
public class Main {
public static void main(String[] args) {
+ Scanner in = new Scanner(System.in);
+ System.out.print("Введите тип фигуры: ");
+ String shape = in.nextLine();
+ System.out.print("Введите длину стороны: ");
+ int length = in.nextInt();
+
+ if (length < 1) {
+ System.out.println("Некорректный ввод");
+ return;
+ }
+
+ 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();
+ }
+
+ private class Square implements RegularFigure {
+ private final String HORIZONTAL = "-";
+ private final String VERTICAL = "|";
+ 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;
+ }
+ }
+
+ private class Triangle implements RegularFigure {
+ String RIGHT_SIDE = "\\";
+ String LEFT_SIDE = "/";
+ String BOTTOM_SIDE = "_";
+ private final int length;
+
+ private Triangle(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public String getFigure() {
+ return getSides() + getBottomSide();
+ }
+
+ private String getBottomSide() {
+ return LEFT_SIDE + BOTTOM_SIDE.repeat(length) + RIGHT_SIDE;
+ }
+
+ private String getSides() {
+ 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
new file mode 100644
index 000000000..119cf2418
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task1/inner_class/figure/RegularFigure.java
@@ -0,0 +1,8 @@
+package com.walking.lesson25_nested_classes.task1.inner_class.figure;
+
+public interface RegularFigure {
+ String SPACE = " ";
+ String NEXT_LINE_SYMBOL = "\n";
+
+ 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 deef3aa47..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
@@ -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,73 @@
*/
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();
+ };
+ }
+
+ private 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;
+ }
+ }
+
+ private 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
new file mode 100644
index 000000000..7f0854ede
--- /dev/null
+++ b/src/com/walking/lesson25_nested_classes/task1/static_class/figure/RegularFigure.java
@@ -0,0 +1,13 @@
+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);
+}
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!");
+ }
+}
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");
+ }
+
+}
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..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
@@ -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();
+ }
+ }
+
+ private static class Cat extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("meow");
+ }
+ }
+
+ private static class Dog extends Animal {
+ @Override
+ public void sound() {
+ System.out.println("woof");
+ }
+ }
+
+ private 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");
+ }
+
+}
diff --git a/src/com/walking/lesson26_string_types/task1/Main.java b/src/com/walking/lesson26_string_types/task1/Main.java
index 42e1afdbf..fefcd9f50 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,23 @@
*/
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..a6dbbd6e8
--- /dev/null
+++ b/src/com/walking/lesson26_string_types/task1/service/Rectangle.java
@@ -0,0 +1,59 @@
+package com.walking.lesson26_string_types.task1.service;
+
+public class Rectangle {
+ 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;
+ }
+
+ /**
+ * как я поняла, 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);
+ for (int i = 0; i < length - 2; i++) {
+ horizontal.append(center);
+ }
+
+ return horizontal
+ .append(side)
+ .append("\n");
+ }
+
+ 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;
+ }
+}
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);
+ }
+}
diff --git a/src/com/walking/lesson26_string_types/task2/Main.java b/src/com/walking/lesson26_string_types/task2/Main.java
index 7f272e617..78f5c291b 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,42 @@
*/
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) {
+ return phrase.trim()
+ .toLowerCase()
+ .split(" ");
+ }
+
+ public static int countWords(String[] phrase) {
+ int counter = 0;
+ boolean isEqual;
+ for (int i = 0; i < phrase.length; i++) {
+ isEqual = isUnique(phrase, i);
+
+ if (!isEqual) {
+ counter--;
+ }
+
+ counter++;
+ }
+
+ return counter;
+ }
+
+ 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;
+ }
+ }
+
+ return true;
}
}
diff --git a/src/com/walking/lesson28_generics1/task1/Main.java b/src/com/walking/lesson28_generics1/task1/Main.java
index 0455c9bea..68a63c849 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.model.GenericNumber;
+
/**
* Создать обобщенный тип, принимающий в себя любого из наследников Number.
* Создать метод, возводящий значение параметризованного типа в степень,
@@ -7,5 +9,12 @@
*/
public class Main {
public static void main(String[] args) {
+ GenericNumber
- * Вариант 1: FileWriter;
- * Вариант 2: BufferedOutputStream;
- * Вариант 3: BufferedWriter.
- */
-public class Main {
- public static void main(String[] args) {
- }
-}
diff --git a/src/com/walking/lesson33_files_2/task1/var1/Main.java b/src/com/walking/lesson33_files_2/task1/var1/Main.java
new file mode 100644
index 000000000..44fc593c0
--- /dev/null
+++ b/src/com/walking/lesson33_files_2/task1/var1/Main.java
@@ -0,0 +1,45 @@
+package com.walking.lesson33_files_2.task1.var1;
+
+import com.walking.lesson19_object_methods.car.Car;
+
+import java.io.*;
+
+/**
+ * Реализуйте Задачу 1 из урока
+ * ...
+ * с помощью:
+ *
+ * Вариант 1: FileWriter;
+ * Вариант 2: BufferedOutputStream;
+ * Вариант 3: BufferedWriter.
+ */
+public class Main {
+ public static final File FILE = new File("./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 (FileWriter writer = new FileWriter(FILE)) {
+ 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);
+ }
+ }
+}
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..1619ee099
--- /dev/null
+++ b/src/com/walking/lesson33_files_2/task1/var2/Main.java
@@ -0,0 +1,46 @@
+package com.walking.lesson33_files_2.task1.var2;
+
+import com.walking.lesson19_object_methods.car.Car;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * для второго варианта в таск2 и здесь сделала отдельный файл на англе,
+ * не уверена, можно ли через FileInputStream кириллицу читать
+ * (у меня не выходит)
+ */
+public class Main {
+ public static final File FILE = new File( "./resources", "carCatalog1.txt");
+
+ public static void main(String[] args) throws IOException {
+ 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);
+ }
+
+ public static void saveCars(Car[] cars) throws IOException {
+ try (FileOutputStream fos = new FileOutputStream(FILE);
+ BufferedOutputStream bos = new BufferedOutputStream(fos)) {
+ for (Car car : cars) {
+ byte[] buffer = getCarInfo(car).getBytes();
+ bos.write(buffer, 0, buffer.length);
+ }
+ System.out.println("Файл записан.");
+
+ } catch (IOException ex) {
+ 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/lesson33_files_2/task1/var3/Main.java b/src/com/walking/lesson33_files_2/task1/var3/Main.java
new file mode 100644
index 000000000..6f4f899ad
--- /dev/null
+++ b/src/com/walking/lesson33_files_2/task1/var3/Main.java
@@ -0,0 +1,38 @@
+package com.walking.lesson33_files_2.task1.var3;
+
+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 File FILE = new File( "./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 (FileWriter writer = new FileWriter(FILE);
+ 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
deleted file mode 100644
index cae9b2874..000000000
--- a/src/com/walking/lesson33_files_2/task2/Main.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.walking.lesson33_files_2.task2;
-
-/**
- * Реализуйте Задачу 2 из урока
- * ...
- * с помощью:
- *
- * Вариант 1: FileReader;
- * Вариант 2: BufferedInputStream;
- * Вариант 3: BufferedReader.
- */
-public class Main {
- public static void main(String[] args) {
- }
-}
diff --git a/src/com/walking/lesson33_files_2/task2/var1/Main.java b/src/com/walking/lesson33_files_2/task2/var1/Main.java
new file mode 100644
index 000000000..58c98ae20
--- /dev/null
+++ b/src/com/walking/lesson33_files_2/task2/var1/Main.java
@@ -0,0 +1,60 @@
+package com.walking.lesson33_files_2.task2.var1;
+
+import com.walking.lesson19_object_methods.car.Car;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Scanner;
+
+/**
+ * Реализуйте Задачу 2 из урока
+ * ...
+ * с помощью:
+ *
+ * Вариант 1: FileReader;
+ * Вариант 2: BufferedInputStream;
+ * Вариант 3: BufferedReader.
+ */
+public class Main {
+ public static final File FILE = new File("./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 (FileReader reader = new FileReader(FILE)) {
+ int i;
+ while ((i = reader.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/var2/Main.java b/src/com/walking/lesson33_files_2/task2/var2/Main.java
new file mode 100644
index 000000000..3efce5e1f
--- /dev/null
+++ b/src/com/walking/lesson33_files_2/task2/var2/Main.java
@@ -0,0 +1,50 @@
+package com.walking.lesson33_files_2.task2.var2;
+
+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 File FILE = new File("./resources", "carCatalog1.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);
+ 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.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..259624ce7
--- /dev/null
+++ b/src/com/walking/lesson33_files_2/task2/var3/Main.java
@@ -0,0 +1,52 @@
+package com.walking.lesson33_files_2.task2.var3;
+
+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 File FILE = new File("./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))) {
+ 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");
+ }
+}
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("Дата указана некорректно.");
+ }
}
}
diff --git a/src/com/walking/lesson34_date_time/task2/Main.java b/src/com/walking/lesson34_date_time/task2/Main.java
index fc6d7351c..27a769d83 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("Дата указана некорректно.");
+ }
}
}
diff --git a/src/com/walking/lesson34_date_time/task3/Main.java b/src/com/walking/lesson34_date_time/task3/Main.java
index 3dcda11b6..ea55865b4 100644
--- a/src/com/walking/lesson34_date_time/task3/Main.java
+++ b/src/com/walking/lesson34_date_time/task3/Main.java
@@ -1,10 +1,85 @@
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 = date1.isBefore(date2) ? countDays(date1, date2) : 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;
+ }
+ LocalDateTime date = dateAfter.minusMonths(1);
+ Month month = date.getMonth();
+ int daysInMonth = month.length(new GregorianCalendar().isLeapYear(date.getYear()));
+ return daysInMonth - day1 + day2;
+
}
}
diff --git a/src/com/walking/lesson37_collection_list/task1/Main.java b/src/com/walking/lesson37_collection_list/task1/Main.java
index 4753b4e8f..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,9 @@
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;
+
/**
* Реализуйте задачу
* ..., используя ArrayList.
@@ -10,6 +14,38 @@
* Изменилось ли что-то в кодовой базе при использовании списка другой реализации?
*/
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);
+
+ 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);
+
+ printCounterValues(counterService);
+ }
+
+ public static void printCounterValues(CounterService counterService) {
+ for(Counter counter : counterService.getCounters()) {
+ 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/model/Counter.java b/src/com/walking/lesson37_collection_list/task1/model/Counter.java
new file mode 100644
index 000000000..81462f4ca
--- /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 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
new file mode 100644
index 000000000..1377a86e5
--- /dev/null
+++ b/src/com/walking/lesson37_collection_list/task1/service/CounterService.java
@@ -0,0 +1,98 @@
+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;
+import java.util.List;
+
+public class CounterService {
+ private final List
@@ -7,6 +13,59 @@
* ....
*/
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 Map