From a914887bae2c8049095cfef3cd5be503659e29d1 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 6 Jul 2021 09:10:00 +0300 Subject: [PATCH 01/92] add homework_1 --- src/main/java/lesson_2/Main.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 src/main/java/lesson_2/Main.java diff --git a/src/main/java/lesson_2/Main.java b/src/main/java/lesson_2/Main.java deleted file mode 100644 index ed30607a..00000000 --- a/src/main/java/lesson_2/Main.java +++ /dev/null @@ -1,12 +0,0 @@ -package lesson_2; - -import lesson_2.catbox.Cat1; - -public class Main { - - public static void main(String[] args) { - final int x = 5; - final Cat1 cat1 = new Cat1(); - } - -} From 5eaca7d623d7933dc529be35fd729e0d61fc8a46 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 6 Jul 2021 09:51:12 +0300 Subject: [PATCH 02/92] homework_1 --- src/homework_1/homework1.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/homework_1/homework1.java diff --git a/src/homework_1/homework1.java b/src/homework_1/homework1.java new file mode 100644 index 00000000..7950ebd6 --- /dev/null +++ b/src/homework_1/homework1.java @@ -0,0 +1,15 @@ +package homework_1; + +public class homework1 { + public static void main(String[] args) { + if(args == null) return; + for (String str: args){ + if(str.equals("ошибка")){ + System.out.println("Тревога!"); + return; + } + System.out.println(str + ":" + str.length()); + } + + } +} From 3b052bc156e690197d42ff6383783a1163e6acaa Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 6 Jul 2021 22:39:22 +0300 Subject: [PATCH 03/92] homework_1 --- src/homework_1/homework1.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/homework_1/homework1.java diff --git a/src/homework_1/homework1.java b/src/homework_1/homework1.java deleted file mode 100644 index 7950ebd6..00000000 --- a/src/homework_1/homework1.java +++ /dev/null @@ -1,15 +0,0 @@ -package homework_1; - -public class homework1 { - public static void main(String[] args) { - if(args == null) return; - for (String str: args){ - if(str.equals("ошибка")){ - System.out.println("Тревога!"); - return; - } - System.out.println(str + ":" + str.length()); - } - - } -} From 6631c49af76ca0f7eb48d331eea672619016e5dc Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 7 Jul 2021 09:45:47 +0300 Subject: [PATCH 04/92] homework_1 --- src/main/java/HomeWork1/Work1.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/HomeWork1/Work1.java diff --git a/src/main/java/HomeWork1/Work1.java b/src/main/java/HomeWork1/Work1.java new file mode 100644 index 00000000..3ca6a086 --- /dev/null +++ b/src/main/java/HomeWork1/Work1.java @@ -0,0 +1,17 @@ +package HomeWork1; + +public class Work1 { + public static void main(String[] args) { + + if(args == null) return; + for (String str: args){ + if(str.equals("ошибка")){ + System.out.println("Тревога!"); + return; + } + System.out.println(str + ":" + str.length()); + } + + + } +} From 290b2c1d9d310c8d41fe0e68bcc40b0deb3161e2 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 7 Jul 2021 10:06:25 +0300 Subject: [PATCH 05/92] homework_1.1 --- src/main/java/{HomeWork1 => HomeWork_1}/Work1.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename src/main/java/{HomeWork1 => HomeWork_1}/Work1.java (60%) diff --git a/src/main/java/HomeWork1/Work1.java b/src/main/java/HomeWork_1/Work1.java similarity index 60% rename from src/main/java/HomeWork1/Work1.java rename to src/main/java/HomeWork_1/Work1.java index 3ca6a086..712c4f23 100644 --- a/src/main/java/HomeWork1/Work1.java +++ b/src/main/java/HomeWork_1/Work1.java @@ -1,4 +1,4 @@ -package HomeWork1; +package HomeWork_1; public class Work1 { public static void main(String[] args) { @@ -6,10 +6,10 @@ public static void main(String[] args) { if(args == null) return; for (String str: args){ if(str.equals("ошибка")){ - System.out.println("Тревога!"); + System.out.println("\u001B[31m"+"Тревога!"); return; } - System.out.println(str + ":" + str.length()); + System.out.println(str + ": " + str.length() + " букв"); } From 3f5fd3f4f33b7e4903616dec2c27b10528ad977a Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 7 Jul 2021 10:27:30 +0300 Subject: [PATCH 06/92] homework_1.4 --- src/main/java/HomeWork_1/Work1.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/HomeWork_1/Work1.java b/src/main/java/HomeWork_1/Work1.java index 712c4f23..cf9045f9 100644 --- a/src/main/java/HomeWork_1/Work1.java +++ b/src/main/java/HomeWork_1/Work1.java @@ -3,13 +3,17 @@ public class Work1 { public static void main(String[] args) { - if(args == null) return; + if(args == null || args[0].isEmpty()) return; + for (String str: args){ - if(str.equals("ошибка")){ - System.out.println("\u001B[31m"+"Тревога!"); - return; - } - System.out.println(str + ": " + str.length() + " букв"); + + if(str.equals("ошибка")){ + System.out.println("\u001B[31m"+"Тревога!"); + return; + } + System.out.println(str + ": " + str.length() + " букв"); + + } From 6cb762ccd1d7e5b80fcf9cfa3ba9c0303c56c5ea Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 10 Jul 2021 19:57:54 +0300 Subject: [PATCH 07/92] homework_1 --- src/main/java/HomeWork_1/Work1.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/HomeWork_1/Work1.java b/src/main/java/HomeWork_1/Work1.java index cf9045f9..d98539b6 100644 --- a/src/main/java/HomeWork_1/Work1.java +++ b/src/main/java/HomeWork_1/Work1.java @@ -9,7 +9,7 @@ public static void main(String[] args) { if(str.equals("ошибка")){ System.out.println("\u001B[31m"+"Тревога!"); - return; + break; } System.out.println(str + ": " + str.length() + " букв"); From 272252cd8c16b5a4c16a2438de5ca948637d7d49 Mon Sep 17 00:00:00 2001 From: Kollega1984 <50799268+Kollega1984@users.noreply.github.com> Date: Sat, 10 Jul 2021 20:21:19 +0300 Subject: [PATCH 08/92] Create README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..71df1e71 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Java Core June 2021 + +## *Dmitriy Prihodko* + +| Number | Solution | Short description +| --- | --- | --- | +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/HomeWork_1) | The app that reads input arguments and prints them, until "error" argument | + +[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 1feb7cdd5a7633aa11c9b617a83589c49c37f011 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 11 Jul 2021 22:14:52 +0300 Subject: [PATCH 09/92] fixed it --- README.md | 2 +- src/main/java/HomeWork_1/Work1.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 71df1e71..350e6ce6 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,6 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/HomeWork_1) | The app that reads input arguments and prints them, until "error" argument | +| **HW1** | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/HomeWork_1) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) diff --git a/src/main/java/HomeWork_1/Work1.java b/src/main/java/HomeWork_1/Work1.java index d98539b6..0414e89c 100644 --- a/src/main/java/HomeWork_1/Work1.java +++ b/src/main/java/HomeWork_1/Work1.java @@ -1,14 +1,16 @@ package HomeWork_1; public class Work1 { + + public static final String redColor = "\u001B[31m"; + public static final String closeColor = "\u001B[0m"; public static void main(String[] args) { - if(args == null || args[0].isEmpty()) return; for (String str: args){ if(str.equals("ошибка")){ - System.out.println("\u001B[31m"+"Тревога!"); + System.out.println(redColor+"Тревога!"+closeColor); break; } System.out.println(str + ": " + str.length() + " букв"); From 938a5015f3576350fbbb50030763d7e7b8a7186e Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 11 Jul 2021 22:20:53 +0300 Subject: [PATCH 10/92] fixed it --- src/main/java/HomeWork_1/Work1.java | 23 ----------------------- src/main/java/homework_1/Main.java | 22 ++++++++++++++++++---- 2 files changed, 18 insertions(+), 27 deletions(-) delete mode 100644 src/main/java/HomeWork_1/Work1.java diff --git a/src/main/java/HomeWork_1/Work1.java b/src/main/java/HomeWork_1/Work1.java deleted file mode 100644 index 0414e89c..00000000 --- a/src/main/java/HomeWork_1/Work1.java +++ /dev/null @@ -1,23 +0,0 @@ -package HomeWork_1; - -public class Work1 { - - public static final String redColor = "\u001B[31m"; - public static final String closeColor = "\u001B[0m"; - public static void main(String[] args) { - - - for (String str: args){ - - if(str.equals("ошибка")){ - System.out.println(redColor+"Тревога!"+closeColor); - break; - } - System.out.println(str + ": " + str.length() + " букв"); - - - } - - - } -} diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 07c029a2..085716a4 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,9 +1,23 @@ -package homework_1; +package HomeWork_1; public class Main { - public static void main(String[] args) { - System.out.println("Hello homework!"); - } + public static final String redColor = "\u001B[31m"; + public static final String closeColor = "\u001B[0m"; + public static void main(String[] args) { + + for (String str: args){ + + if(str.equals("ошибка")){ + System.out.println(redColor+"Тревога!"+closeColor); + break; + } + System.out.println(str + ": " + str.length() + " букв"); + + + } + + + } } From 0c9b7109a024bebc4d69ee48e464e618a458d1a5 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 11 Jul 2021 23:27:17 +0300 Subject: [PATCH 11/92] changed README --- README.md | 10 +--------- src/main/java/homework_1/Main.java | 6 +----- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 7858325e..71df1e71 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,9 @@ # Java Core June 2021 -<<<<<<< HEAD ## *Dmitriy Prihodko* | Number | Solution | Short description | --- | --- | --- | -| **HW1** | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/HomeWork_1) | The app that reads input arguments and prints them, until "error" argument | -======= -## *Nikolaev Artem* - -| Number | Solution | Short description -| --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/master/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | ->>>>>>> master +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/HomeWork_1) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 085716a4..ccf0b78e 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -4,18 +4,14 @@ public class Main { public static final String redColor = "\u001B[31m"; public static final String closeColor = "\u001B[0m"; - public static void main(String[] args) { - + public static void main(String[] args) { for (String str: args){ - if(str.equals("ошибка")){ System.out.println(redColor+"Тревога!"+closeColor); break; } System.out.println(str + ": " + str.length() + " букв"); - - } From 709d3d3281a1297b0c78ddbdf6436a54319588c5 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 14 Jul 2021 22:58:31 +0300 Subject: [PATCH 12/92] fix bugs --- src/main/java/homework_1/Main.java | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index ccf0b78e..b8dac5a8 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,18 +1,27 @@ -package HomeWork_1; +package homework_1; + +/* + * Main + * + * v2 + * + * Prihodko Dmitriy + */ + public class Main { - public static final String redColor = "\u001B[31m"; - public static final String closeColor = "\u001B[0m"; + public static final String RED_COLOR = "\u001B[31m"; + public static final String CLOSE_COLOR = "\u001B[0m"; public static void main(String[] args) { - for (String str: args){ - if(str.equals("ошибка")){ - System.out.println(redColor+"Тревога!"+closeColor); - break; - } - System.out.println(str + ": " + str.length() + " букв"); + for (String str : args) { + if (str.equals("ошибка")) { + System.out.println(RED_COLOR + "Тревога!" + CLOSE_COLOR); + break; } + System.out.println(str + ": " + str.length() + " букв"); + } } From 37be3726a488dd4ef9fd3f170affcce60bbc48ed Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 14 Jul 2021 23:49:07 +0300 Subject: [PATCH 13/92] Traffic_light v2 --- src/main/java/homework_2/Traffic_light.java | 52 +++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/main/java/homework_2/Traffic_light.java diff --git a/src/main/java/homework_2/Traffic_light.java b/src/main/java/homework_2/Traffic_light.java new file mode 100644 index 00000000..d876ef7f --- /dev/null +++ b/src/main/java/homework_2/Traffic_light.java @@ -0,0 +1,52 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/* + * Traffic_light + * + * v1 + * + * Prihodko Dmitriy + */ + +public class Traffic_light { + public static void main(String[] args) { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int seconds = 0; + try { + seconds = Integer.parseInt(reader.readLine()); + + if(seconds>86399) + throw new IndexOutOfBoundsException(); + if(seconds<0) + throw new ArithmeticException(); + } catch (NumberFormatException e) { + System.out.println("ошибка, только числа"); + return; + } catch (IndexOutOfBoundsException e) { + System.out.println("ошибка, недопустимое значение"); + return; + } catch (ArithmeticException e) { + System.out.println("ошибка, только позитивные"); + return; + } catch (IOException e) { + e.printStackTrace(); + } + + if(seconds>60) + seconds %= 60; + + if (seconds<35){ + System.out.println("зеленый"); + } else if(seconds<40){ + System.out.println("желтый"); + } else if(seconds<55){ + System.out.println("красный"); + } else { + System.out.println("желтый"); + } + } +} From b65132395ee05213b9e9d54654281f60b0251dc3 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 15 Jul 2021 22:05:57 +0300 Subject: [PATCH 14/92] add Pyramid_Printer v1 --- src/main/java/homework_2/Pyramid_Printer.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/homework_2/Pyramid_Printer.java diff --git a/src/main/java/homework_2/Pyramid_Printer.java b/src/main/java/homework_2/Pyramid_Printer.java new file mode 100644 index 00000000..28e896ce --- /dev/null +++ b/src/main/java/homework_2/Pyramid_Printer.java @@ -0,0 +1,39 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class Pyramid_Printer { + public static void main(String[] args) { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int x = 0; + try { + x = Integer.parseInt(reader.readLine()); + if(x<=0){ + throw new ArithmeticException(); + } + }catch (ArithmeticException e){ + System.out.println("Число отрицательное"); + return; + + }catch (Exception e){ + System.out.println("Ошибка"); + } + + for (int i=1; i<=x;i++){ + System.out.println(getX(i)); + } + + + } + public static String getX(int score){ + StringBuilder result = new StringBuilder(); + + for(int i=0;i Date: Thu, 15 Jul 2021 22:49:58 +0300 Subject: [PATCH 15/92] Random_Chars_Table v1 --- .../java/homework_2/Random_Chars_Table.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/main/java/homework_2/Random_Chars_Table.java diff --git a/src/main/java/homework_2/Random_Chars_Table.java b/src/main/java/homework_2/Random_Chars_Table.java new file mode 100644 index 00000000..a0a5badf --- /dev/null +++ b/src/main/java/homework_2/Random_Chars_Table.java @@ -0,0 +1,54 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Random; + +public class Random_Chars_Table { + public static void main(String[] args) throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + + int x = Integer.parseInt(reader.readLine()); + int y = Integer.parseInt(reader.readLine()); + String word = reader.readLine(); + char[][] table = new char[x][y]; + int helper; + ArrayList resultEven = new ArrayList<>(); + ArrayList resultOdd = new ArrayList<>(); + + for(int i=0; i Date: Mon, 19 Jul 2021 01:18:31 +0300 Subject: [PATCH 16/92] Random_Chars_Table v1 --- .../java/homework_2/Random_Chars_Table.java | 57 ++++++++++++------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/src/main/java/homework_2/Random_Chars_Table.java b/src/main/java/homework_2/Random_Chars_Table.java index a0a5badf..8e1c01c1 100644 --- a/src/main/java/homework_2/Random_Chars_Table.java +++ b/src/main/java/homework_2/Random_Chars_Table.java @@ -4,7 +4,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; -import java.util.Random; +import java.util.stream.Collectors; public class Random_Chars_Table { public static void main(String[] args) throws IOException { @@ -13,42 +13,57 @@ public static void main(String[] args) throws IOException { int x = Integer.parseInt(reader.readLine()); int y = Integer.parseInt(reader.readLine()); String word = reader.readLine(); + char[][] table = new char[x][y]; int helper; - ArrayList resultEven = new ArrayList<>(); - ArrayList resultOdd = new ArrayList<>(); + ArrayList words = new ArrayList<>(); - for(int i=0; i words, boolean even) { + String res; + if (even) { + res = words.stream().filter(i -> i % 2 == 0) + .distinct() + .map(i -> String.valueOf((char) i.intValue())) + .collect(Collectors.joining(",")); + } else { + res = words.stream().filter(i -> i % 2 == 1) + .distinct() + .map(i -> String.valueOf((char) i.intValue())) + .collect(Collectors.joining(",")); + } + return res; + } } From 41c4c3b385a02e7c99efb8dc8214e85248ae524c Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Mon, 19 Jul 2021 01:24:14 +0300 Subject: [PATCH 17/92] readMe add homeWork2 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 71df1e71..4c5777e6 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,6 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/HomeWork_1) | The app that reads input arguments and prints them, until "error" argument | - +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW2 | [Three homework2](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2) | The app with "Traffic light","PyramidPrinter","RandomCharsTable" homework2 | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From c35ddb5b0c5a2c5977b493758d49adf21c5f9e30 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 22 Jul 2021 00:37:20 +0300 Subject: [PATCH 18/92] Piramid v1 --- build.gradle | 2 + src/main/java/homework_2/Pyramid_Printer.java | 39 ------------------- .../java/homework_2/Pyramid_Printer/Main.java | 10 +++++ .../Pyramid_Printer/PyramidPrinter.java | 36 +++++++++++++++++ .../Pyramid_Printer/PyramidPrinterTest.java | 17 ++++++++ 5 files changed, 65 insertions(+), 39 deletions(-) delete mode 100644 src/main/java/homework_2/Pyramid_Printer.java create mode 100644 src/main/java/homework_2/Pyramid_Printer/Main.java create mode 100644 src/main/java/homework_2/Pyramid_Printer/PyramidPrinter.java create mode 100644 src/main/java/homework_2/Pyramid_Printer/PyramidPrinterTest.java diff --git a/build.gradle b/build.gradle index b91dc843..f01c40a2 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,8 @@ repositories { } dependencies { + implementation 'junit:junit:4.13.1' + implementation 'org.junit.jupiter:junit-jupiter:5.7.0' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } diff --git a/src/main/java/homework_2/Pyramid_Printer.java b/src/main/java/homework_2/Pyramid_Printer.java deleted file mode 100644 index 28e896ce..00000000 --- a/src/main/java/homework_2/Pyramid_Printer.java +++ /dev/null @@ -1,39 +0,0 @@ -package homework_2; - -import java.io.BufferedReader; -import java.io.InputStreamReader; - -public class Pyramid_Printer { - public static void main(String[] args) { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - int x = 0; - try { - x = Integer.parseInt(reader.readLine()); - if(x<=0){ - throw new ArithmeticException(); - } - }catch (ArithmeticException e){ - System.out.println("Число отрицательное"); - return; - - }catch (Exception e){ - System.out.println("Ошибка"); - } - - for (int i=1; i<=x;i++){ - System.out.println(getX(i)); - } - - - } - public static String getX(int score){ - StringBuilder result = new StringBuilder(); - - for(int i=0;i Date: Thu, 22 Jul 2021 01:18:51 +0300 Subject: [PATCH 19/92] RandomChar v2 --- .../java/homework_2/Pyramid_Printer/Main.java | 5 +- .../java/homework_2/Random_Chars_Table.java | 69 ---------------- .../homework_2/Random_Chars_Table/Main.java | 9 ++ .../Random_Chars_Table/RandomCharsTable.java | 82 +++++++++++++++++++ .../{ => Traffic_Light}/Traffic_light.java | 2 +- 5 files changed, 94 insertions(+), 73 deletions(-) delete mode 100644 src/main/java/homework_2/Random_Chars_Table.java create mode 100644 src/main/java/homework_2/Random_Chars_Table/Main.java create mode 100644 src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java rename src/main/java/homework_2/{ => Traffic_Light}/Traffic_light.java (97%) diff --git a/src/main/java/homework_2/Pyramid_Printer/Main.java b/src/main/java/homework_2/Pyramid_Printer/Main.java index fbcbb0e0..63654bf1 100644 --- a/src/main/java/homework_2/Pyramid_Printer/Main.java +++ b/src/main/java/homework_2/Pyramid_Printer/Main.java @@ -1,10 +1,9 @@ package homework_2.Pyramid_Printer; -import java.io.IOException; - public class Main { public static void main(String[] args) { - new PyramidPrinter().run(); + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + pyramidPrinter.run(); } } diff --git a/src/main/java/homework_2/Random_Chars_Table.java b/src/main/java/homework_2/Random_Chars_Table.java deleted file mode 100644 index 8e1c01c1..00000000 --- a/src/main/java/homework_2/Random_Chars_Table.java +++ /dev/null @@ -1,69 +0,0 @@ -package homework_2; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.stream.Collectors; - -public class Random_Chars_Table { - public static void main(String[] args) throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - - int x = Integer.parseInt(reader.readLine()); - int y = Integer.parseInt(reader.readLine()); - String word = reader.readLine(); - - char[][] table = new char[x][y]; - int helper; - ArrayList words = new ArrayList<>(); - - for (int i = 0; i < x; i++) { - for (int j = 0; j < y; j++) { - helper = getRandomNumber(); - table[i][j] = (char) helper; - words.add(helper); - - } - } - - for (int i = 0; i < x; i++) { - for (int j = 0; j < y; j++) { - System.out.print("|" + table[i][j]); - } - System.out.print("|"); - System.out.println(); - } - - if (word.equals("even")) { - - System.out.println(getResultChar(words, true)); - - } else if (word.equals("odd")) { - - System.out.println(getResultChar(words, false)); - - } - - } - - public static int getRandomNumber() { - return (int) ((Math.random() * (90 - 65)) + 65); - } - - public static String getResultChar(ArrayList words, boolean even) { - String res; - if (even) { - res = words.stream().filter(i -> i % 2 == 0) - .distinct() - .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(",")); - } else { - res = words.stream().filter(i -> i % 2 == 1) - .distinct() - .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(",")); - } - return res; - } -} diff --git a/src/main/java/homework_2/Random_Chars_Table/Main.java b/src/main/java/homework_2/Random_Chars_Table/Main.java new file mode 100644 index 00000000..6946bceb --- /dev/null +++ b/src/main/java/homework_2/Random_Chars_Table/Main.java @@ -0,0 +1,9 @@ +package homework_2.Random_Chars_Table; + +public class Main { + + public static void main(String[] args) { + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.run(); + } +} diff --git a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java new file mode 100644 index 00000000..7ffa3e57 --- /dev/null +++ b/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java @@ -0,0 +1,82 @@ +package homework_2.Random_Chars_Table; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.stream.Collectors; + +public class RandomCharsTable { + + public void run() { + + int x; + int y; + String word; + + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + + String[] str = reader.readLine().split(" "); + x = Integer.parseInt(str[0]); + y = Integer.parseInt(str[1]); + word = str[2]; + + if (x < 1 || y < 1 || !(word.equals("even") || word.equals("odd"))) { + System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); + return; + } + } catch (Exception e) { + System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); + return; + } + + char[][] table = new char[x][y]; + ArrayList words = new ArrayList<>(); + + for (int i = 0; i < x; i++) { + for (int j = 0; j < y; j++) { + int helper = getRandomNumber(); + table[i][j] = (char) helper; + words.add(helper); + } + } + + printTable(table, x, y); + + if (word.equals("even")) { + System.out.println(getResultChar(words, true)); + } else { + System.out.println(getResultChar(words, false)); + } + + } + + public static int getRandomNumber() { + return (int) ((Math.random() * (90 - 65)) + 65); + } + + public static String getResultChar(ArrayList words, boolean even) { + + if (even) { + return words.stream().filter(i -> i % 2 == 0) + .distinct() + .map(i -> String.valueOf((char) i.intValue())) + .collect(Collectors.joining(",")); + } else { + return words.stream().filter(i -> i % 2 == 1) + .distinct() + .map(i -> String.valueOf((char) i.intValue())) + .collect(Collectors.joining(",")); + } + } + + public void printTable(char[][] table, int x, int y) { + for (int i = 0; i < x; i++) { + for (int j = 0; j < y; j++) { + System.out.print("|" + table[i][j]); + } + System.out.print("|"); + System.out.println(); + } + } + +} diff --git a/src/main/java/homework_2/Traffic_light.java b/src/main/java/homework_2/Traffic_Light/Traffic_light.java similarity index 97% rename from src/main/java/homework_2/Traffic_light.java rename to src/main/java/homework_2/Traffic_Light/Traffic_light.java index d876ef7f..f644aa48 100644 --- a/src/main/java/homework_2/Traffic_light.java +++ b/src/main/java/homework_2/Traffic_Light/Traffic_light.java @@ -1,4 +1,4 @@ -package homework_2; +package homework_2.Traffic_Light; import java.io.BufferedReader; import java.io.IOException; From 127880a2d3954bbf785c32aa274c0f2b516df4ec Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 22 Jul 2021 01:23:09 +0300 Subject: [PATCH 20/92] RandomChar v3 --- .../homework_2/Random_Chars_Table/RandomCharsTable.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java index 7ffa3e57..99f9de58 100644 --- a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java @@ -55,18 +55,20 @@ public static int getRandomNumber() { } public static String getResultChar(ArrayList words, boolean even) { - + String result; if (even) { - return words.stream().filter(i -> i % 2 == 0) + result = words.stream().filter(i -> i % 2 == 0) .distinct() .map(i -> String.valueOf((char) i.intValue())) .collect(Collectors.joining(",")); } else { - return words.stream().filter(i -> i % 2 == 1) + result = words.stream().filter(i -> i % 2 == 1) .distinct() .map(i -> String.valueOf((char) i.intValue())) .collect(Collectors.joining(",")); } + if(result.isEmpty()) return "Нет подходящих символов"; + return result; } public void printTable(char[][] table, int x, int y) { From d4c12ed5b50570c4fec8c963670e246d9b8ba04d Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 24 Jul 2021 12:42:53 +0300 Subject: [PATCH 21/92] readme add HW2 --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c5777e6..fcc8a229 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,14 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [Three homework2](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2) | The app with "Traffic light","PyramidPrinter","RandomCharsTable" homework2 | +| HW2 | [TrafficLight](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/Traffic_Light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| HW2 | [PyramidPrinter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/Pyramid_Printer) | App reads the number one time from the command line, and prints a pyramid of "x". | +| HW2 | [RandomCharsTable](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/Random_Chars_Table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| HW3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_3) | ImmutableClass | +| HW3 | [PyramidPrinterTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | +| HW3 | [RandomCharsTableTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/random_chars_table) | Random chars table tests | +| HW3 | [TrafficLightTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/traffic_light) | Traffic light tests| + + +[Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 2acfbd5cc166b21344d29c29f762329d226f1a9c Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 24 Jul 2021 12:57:28 +0300 Subject: [PATCH 22/92] up HW2 --- .../java/homework_2/Pyramid_Printer/Main.java | 5 +- .../Pyramid_Printer/PyramidPrinterTest.java | 17 ------- .../homework_2/Random_Chars_Table/Main.java | 5 +- .../Random_Chars_Table/RandomCharsTable.java | 1 + .../java/homework_2/Traffic_Light/Main.java | 10 ++++ .../Traffic_Light/Traffic_light.java | 50 ++++++++----------- 6 files changed, 38 insertions(+), 50 deletions(-) delete mode 100644 src/main/java/homework_2/Pyramid_Printer/PyramidPrinterTest.java create mode 100644 src/main/java/homework_2/Traffic_Light/Main.java diff --git a/src/main/java/homework_2/Pyramid_Printer/Main.java b/src/main/java/homework_2/Pyramid_Printer/Main.java index 63654bf1..db7c123e 100644 --- a/src/main/java/homework_2/Pyramid_Printer/Main.java +++ b/src/main/java/homework_2/Pyramid_Printer/Main.java @@ -3,7 +3,8 @@ public class Main { public static void main(String[] args) { - PyramidPrinter pyramidPrinter = new PyramidPrinter(); - pyramidPrinter.run(); + + new PyramidPrinter().run(); + } } diff --git a/src/main/java/homework_2/Pyramid_Printer/PyramidPrinterTest.java b/src/main/java/homework_2/Pyramid_Printer/PyramidPrinterTest.java deleted file mode 100644 index fd7f9d19..00000000 --- a/src/main/java/homework_2/Pyramid_Printer/PyramidPrinterTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package homework_2.Pyramid_Printer; - -import org.junit.Test; - - -class PyramidPrinterTest { - - @Test - void run() { - - } - - @Test - void printPyramid() { - - } -} \ No newline at end of file diff --git a/src/main/java/homework_2/Random_Chars_Table/Main.java b/src/main/java/homework_2/Random_Chars_Table/Main.java index 6946bceb..cd7af2de 100644 --- a/src/main/java/homework_2/Random_Chars_Table/Main.java +++ b/src/main/java/homework_2/Random_Chars_Table/Main.java @@ -3,7 +3,8 @@ public class Main { public static void main(String[] args) { - RandomCharsTable randomCharsTable = new RandomCharsTable(); - randomCharsTable.run(); + + new RandomCharsTable().run(); + } } diff --git a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java index 99f9de58..1e208a61 100644 --- a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java @@ -24,6 +24,7 @@ public void run() { System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); return; } + } catch (Exception e) { System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); return; diff --git a/src/main/java/homework_2/Traffic_Light/Main.java b/src/main/java/homework_2/Traffic_Light/Main.java new file mode 100644 index 00000000..76274292 --- /dev/null +++ b/src/main/java/homework_2/Traffic_Light/Main.java @@ -0,0 +1,10 @@ +package homework_2.Traffic_Light; + +public class Main { + + public static void main(String[] args) { + + new Traffic_light().run(); + + } +} diff --git a/src/main/java/homework_2/Traffic_Light/Traffic_light.java b/src/main/java/homework_2/Traffic_Light/Traffic_light.java index f644aa48..95063542 100644 --- a/src/main/java/homework_2/Traffic_Light/Traffic_light.java +++ b/src/main/java/homework_2/Traffic_Light/Traffic_light.java @@ -4,46 +4,38 @@ import java.io.IOException; import java.io.InputStreamReader; -/* - * Traffic_light - * - * v1 - * - * Prihodko Dmitriy - */ - public class Traffic_light { - public static void main(String[] args) { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - int seconds = 0; - try { + + public void run() { + + int seconds; + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ seconds = Integer.parseInt(reader.readLine()); - if(seconds>86399) - throw new IndexOutOfBoundsException(); - if(seconds<0) - throw new ArithmeticException(); - } catch (NumberFormatException e) { + if(seconds>86399) { + System.out.println("ошибка, недопустимое значение"); + return; + } + if(seconds<0) { + System.out.println("ошибка, только позитивные"); + return; + } + } catch (NumberFormatException | IOException e) { System.out.println("ошибка, только числа"); return; - } catch (IndexOutOfBoundsException e) { - System.out.println("ошибка, недопустимое значение"); - return; - } catch (ArithmeticException e) { - System.out.println("ошибка, только позитивные"); - return; - } catch (IOException e) { - e.printStackTrace(); } + int result; + if(seconds>60) - seconds %= 60; + result = seconds%60; + else result = seconds; - if (seconds<35){ + if (result<35){ System.out.println("зеленый"); - } else if(seconds<40){ + } else if(result<40){ System.out.println("желтый"); - } else if(seconds<55){ + } else if(result<55){ System.out.println("красный"); } else { System.out.println("желтый"); From 35c4e10324970017dc0e468727c71e9f059f14d9 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 24 Jul 2021 13:11:34 +0300 Subject: [PATCH 23/92] add tests --- .../java/homework_2/pyramid_printer/PyramidPrinterTest.java | 6 ++++++ .../homework_2/random_chars_table/RandomCharsTableTest.java | 6 ++++++ .../java/homework_2/traffic_light/TrafficLightTest.java | 6 ++++++ 3 files changed, 18 insertions(+) create mode 100644 src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java create mode 100644 src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java create mode 100644 src/test/java/homework_2/traffic_light/TrafficLightTest.java diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java new file mode 100644 index 00000000..6a2db4f1 --- /dev/null +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java @@ -0,0 +1,6 @@ +package homework_2.pyramid_printer; + +import base.UnitBase; + +public class PyramidPrinterTest extends UnitBase { +} diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java new file mode 100644 index 00000000..810b1cbc --- /dev/null +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -0,0 +1,6 @@ +package homework_2.random_chars_table; + +import base.UnitBase; + +public class RandomCharsTableTest extends UnitBase { +} diff --git a/src/test/java/homework_2/traffic_light/TrafficLightTest.java b/src/test/java/homework_2/traffic_light/TrafficLightTest.java new file mode 100644 index 00000000..954746d5 --- /dev/null +++ b/src/test/java/homework_2/traffic_light/TrafficLightTest.java @@ -0,0 +1,6 @@ +package homework_2.traffic_light; + +import base.UnitBase; + +public class TrafficLightTest extends UnitBase { +} From 4c72932233f2de5dd39c490e2241b8f1843dee5e Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 24 Jul 2021 13:47:15 +0300 Subject: [PATCH 24/92] changes tests and readme --- README.md | 7 +++--- .../Main.java | 2 +- .../PyramidPrinter.java | 2 +- .../Main.java | 2 +- .../RandomCharsTable.java | 2 +- .../Main.java | 2 +- .../Traffic_light.java | 2 +- .../pyramid_printer/PyramidPrinterTest.java | 22 +++++++++++++++++-- 8 files changed, 29 insertions(+), 12 deletions(-) rename src/main/java/homework_2/{Pyramid_Printer => pyramid_printer}/Main.java (75%) rename src/main/java/homework_2/{Pyramid_Printer => pyramid_printer}/PyramidPrinter.java (95%) rename src/main/java/homework_2/{Random_Chars_Table => random_chars_table}/Main.java (74%) rename src/main/java/homework_2/{Random_Chars_Table => random_chars_table}/RandomCharsTable.java (98%) rename src/main/java/homework_2/{Traffic_Light => traffic_light}/Main.java (76%) rename src/main/java/homework_2/{Traffic_Light => traffic_light}/Traffic_light.java (97%) diff --git a/README.md b/README.md index fcc8a229..04feb9f5 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,9 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [TrafficLight](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/Traffic_Light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| HW2 | [PyramidPrinter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/Pyramid_Printer) | App reads the number one time from the command line, and prints a pyramid of "x". | -| HW2 | [RandomCharsTable](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/Random_Chars_Table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| HW3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_3) | ImmutableClass | +| HW2 | [TrafficLight](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| HW2 | [PyramidPrinter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/pyramid_printer) | App reads the number one time from the command line, and prints a pyramid of "x". | +| HW2 | [RandomCharsTable](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/random_chars_table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | | HW3 | [PyramidPrinterTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | | HW3 | [RandomCharsTableTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/random_chars_table) | Random chars table tests | | HW3 | [TrafficLightTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/traffic_light) | Traffic light tests| diff --git a/src/main/java/homework_2/Pyramid_Printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java similarity index 75% rename from src/main/java/homework_2/Pyramid_Printer/Main.java rename to src/main/java/homework_2/pyramid_printer/Main.java index db7c123e..5bdd1d52 100644 --- a/src/main/java/homework_2/Pyramid_Printer/Main.java +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -1,4 +1,4 @@ -package homework_2.Pyramid_Printer; +package homework_2.pyramid_printer; public class Main { diff --git a/src/main/java/homework_2/Pyramid_Printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java similarity index 95% rename from src/main/java/homework_2/Pyramid_Printer/PyramidPrinter.java rename to src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 8f9053c5..5dc3f947 100644 --- a/src/main/java/homework_2/Pyramid_Printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -1,4 +1,4 @@ -package homework_2.Pyramid_Printer; +package homework_2.pyramid_printer; import java.io.BufferedReader; import java.io.InputStreamReader; diff --git a/src/main/java/homework_2/Random_Chars_Table/Main.java b/src/main/java/homework_2/random_chars_table/Main.java similarity index 74% rename from src/main/java/homework_2/Random_Chars_Table/Main.java rename to src/main/java/homework_2/random_chars_table/Main.java index cd7af2de..24ca0405 100644 --- a/src/main/java/homework_2/Random_Chars_Table/Main.java +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -1,4 +1,4 @@ -package homework_2.Random_Chars_Table; +package homework_2.random_chars_table; public class Main { diff --git a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java similarity index 98% rename from src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java rename to src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 1e208a61..2ec423b5 100644 --- a/src/main/java/homework_2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,4 +1,4 @@ -package homework_2.Random_Chars_Table; +package homework_2.random_chars_table; import java.io.BufferedReader; import java.io.InputStreamReader; diff --git a/src/main/java/homework_2/Traffic_Light/Main.java b/src/main/java/homework_2/traffic_light/Main.java similarity index 76% rename from src/main/java/homework_2/Traffic_Light/Main.java rename to src/main/java/homework_2/traffic_light/Main.java index 76274292..904c0c96 100644 --- a/src/main/java/homework_2/Traffic_Light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -1,4 +1,4 @@ -package homework_2.Traffic_Light; +package homework_2.traffic_light; public class Main { diff --git a/src/main/java/homework_2/Traffic_Light/Traffic_light.java b/src/main/java/homework_2/traffic_light/Traffic_light.java similarity index 97% rename from src/main/java/homework_2/Traffic_Light/Traffic_light.java rename to src/main/java/homework_2/traffic_light/Traffic_light.java index 95063542..cf4bca75 100644 --- a/src/main/java/homework_2/Traffic_Light/Traffic_light.java +++ b/src/main/java/homework_2/traffic_light/Traffic_light.java @@ -1,4 +1,4 @@ -package homework_2.Traffic_Light; +package homework_2.traffic_light; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java index 6a2db4f1..de0e136a 100644 --- a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java @@ -1,6 +1,24 @@ package homework_2.pyramid_printer; import base.UnitBase; +import org.junit.jupiter.api.Test; -public class PyramidPrinterTest extends UnitBase { -} +import static org.junit.jupiter.api.Assertions.*; + +class PyramidPrinterTest extends UnitBase { + + @Test + void ghkghk() { + setInput("1"); + new PyramidPrinter().run(); + assertEquals("x", getOutputLines()[0]); + } + + @Test + void printPyramid() { + setInput("2"); + new PyramidPrinter().run(); + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + } +} \ No newline at end of file From 72a39289008936f35840cf95929236cea3516453 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 24 Jul 2021 14:35:28 +0300 Subject: [PATCH 25/92] changes tests and readme --- .../pyramid_printer/PyramidPrinter.java | 2 +- .../pyramid_printer/PyramidPrinterTest.java | 40 +++++++++++- .../RandomCharsTableTest.java | 62 ++++++++++++++++++- 3 files changed, 98 insertions(+), 6 deletions(-) diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 5dc3f947..4a0a7791 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -10,7 +10,7 @@ public void run() { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { int x = Integer.parseInt(reader.readLine()); if (x <= 0) { - System.out.println("Число отрицательное или 0"); + System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java index de0e136a..0be46452 100644 --- a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java @@ -8,17 +8,51 @@ class PyramidPrinterTest extends UnitBase { @Test - void ghkghk() { + void given_not_correct() { + setInput("tjtjs"); + new PyramidPrinter().run(); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); + } + @Test + void given_empty() { + setInput(""); + new PyramidPrinter().run(); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); + } + + @Test + void given_big_integer() { + setInput("4236262634264754"); + new PyramidPrinter().run(); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); + } + @Test + void given_negative_integer() { + setInput("-1"); + new PyramidPrinter().run(); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); + } + + @Test + void given_0() { + setInput("0"); + new PyramidPrinter().run(); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); + } + @Test + void given_1() { setInput("1"); new PyramidPrinter().run(); assertEquals("x", getOutputLines()[0]); } @Test - void printPyramid() { - setInput("2"); + void given_4() { + setInput("4"); new PyramidPrinter().run(); assertEquals("x", getOutputLines()[0]); assertEquals("xx", getOutputLines()[1]); + assertEquals("xxx", getOutputLines()[2]); + assertEquals("xxxx", getOutputLines()[3]); } } \ No newline at end of file diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java index 810b1cbc..a0d2827a 100644 --- a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -1,6 +1,64 @@ package homework_2.random_chars_table; import base.UnitBase; +import org.junit.jupiter.api.Test; -public class RandomCharsTableTest extends UnitBase { -} +import static org.junit.jupiter.api.Assertions.*; + +class RandomCharsTableTest extends UnitBase { + + @Test + void given_correct_option_even() { + setInput("3 3 even"); + + new RandomCharsTable().run(); + String str = getOutputLines()[getOutputLines().length-1]; + for (Character character: str.toCharArray()){ + if(character % 2 == 1){ + fail(); + return; + } + } + assertTrue(true); + } + @Test + void given_correct_option_odd() { + setInput("2 2 odd"); + + new RandomCharsTable().run(); + String str = getOutputLines()[getOutputLines().length-1]; + for (Character character: str.toCharArray()){ + if(character % 2 == 0){ + fail(); + return; + } + } + assertTrue(true); + } + @Test + void given_first_bad() { + setInput("-1 1 even"); + + new RandomCharsTable().run(); + + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); + } + @Test + void given_second_bad() { + setInput("1 -31 odd"); + + new RandomCharsTable().run(); + + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); + } + + @Test + void given_last_bad() { + setInput("1 -3 dfsdf"); + + new RandomCharsTable().run(); + + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); + } + +} \ No newline at end of file From c0423d066ca338b4bc2b4e1389975372a269d6cd Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 25 Jul 2021 00:41:44 +0300 Subject: [PATCH 26/92] add test --- .../random_chars_table/RandomCharsTableTest.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java index a0d2827a..1c2604ca 100644 --- a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -21,20 +21,7 @@ void given_correct_option_even() { } assertTrue(true); } - @Test - void given_correct_option_odd() { - setInput("2 2 odd"); - new RandomCharsTable().run(); - String str = getOutputLines()[getOutputLines().length-1]; - for (Character character: str.toCharArray()){ - if(character % 2 == 0){ - fail(); - return; - } - } - assertTrue(true); - } @Test void given_first_bad() { setInput("-1 1 even"); From c66149f0997a06ac5b22887be41b1420d20e8582 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 25 Jul 2021 12:30:26 +0300 Subject: [PATCH 27/92] add tests --- .../random_chars_table/RandomCharsTable.java | 14 +++-- .../traffic_light/Traffic_light.java | 19 +++--- .../pyramid_printer/PyramidPrinterTest.java | 10 ++++ .../RandomCharsTableTest.java | 53 +++++++++++------ .../traffic_light/TrafficLightTest.java | 59 +++++++++++++++++++ 5 files changed, 122 insertions(+), 33 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 2ec423b5..8ac5aad2 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -45,30 +45,32 @@ public void run() { if (word.equals("even")) { System.out.println(getResultChar(words, true)); - } else { + } if(word.equals("odd")) { System.out.println(getResultChar(words, false)); + } else { + System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); } - } public static int getRandomNumber() { - return (int) ((Math.random() * (90 - 65)) + 65); + return (int) ((Math.random() * ('Z' - 'A')) + 'A'); } public static String getResultChar(ArrayList words, boolean even) { String result; if (even) { - result = words.stream().filter(i -> i % 2 == 0) + result = "Even letters - "; + result += words.stream().filter(i -> i % 2 == 0) .distinct() .map(i -> String.valueOf((char) i.intValue())) .collect(Collectors.joining(",")); } else { - result = words.stream().filter(i -> i % 2 == 1) + result = "Odd letters - "; + result += words.stream().filter(i -> i % 2 == 1) .distinct() .map(i -> String.valueOf((char) i.intValue())) .collect(Collectors.joining(",")); } - if(result.isEmpty()) return "Нет подходящих символов"; return result; } diff --git a/src/main/java/homework_2/traffic_light/Traffic_light.java b/src/main/java/homework_2/traffic_light/Traffic_light.java index cf4bca75..2705425a 100644 --- a/src/main/java/homework_2/traffic_light/Traffic_light.java +++ b/src/main/java/homework_2/traffic_light/Traffic_light.java @@ -13,32 +13,33 @@ public void run() { seconds = Integer.parseInt(reader.readLine()); if(seconds>86399) { - System.out.println("ошибка, недопустимое значение"); + System.out.println("The day is over"); return; } if(seconds<0) { - System.out.println("ошибка, только позитивные"); + System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } } catch (NumberFormatException | IOException e) { - System.out.println("ошибка, только числа"); + System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } int result; - if(seconds>60) - result = seconds%60; + if(seconds>60) { + result = seconds % 60; + } else result = seconds; if (result<35){ - System.out.println("зеленый"); + System.out.println("GREEN"); } else if(result<40){ - System.out.println("желтый"); + System.out.println("YELLOW"); } else if(result<55){ - System.out.println("красный"); + System.out.println("RED"); } else { - System.out.println("желтый"); + System.out.println("YELLOW"); } } } diff --git a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java index 0be46452..2e1fee9f 100644 --- a/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java +++ b/src/test/java/homework_2/pyramid_printer/PyramidPrinterTest.java @@ -10,12 +10,15 @@ class PyramidPrinterTest extends UnitBase { @Test void given_not_correct() { setInput("tjtjs"); + new PyramidPrinter().run(); assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } + @Test void given_empty() { setInput(""); + new PyramidPrinter().run(); assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @@ -23,12 +26,15 @@ void given_empty() { @Test void given_big_integer() { setInput("4236262634264754"); + new PyramidPrinter().run(); assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } + @Test void given_negative_integer() { setInput("-1"); + new PyramidPrinter().run(); assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @@ -36,12 +42,15 @@ void given_negative_integer() { @Test void given_0() { setInput("0"); + new PyramidPrinter().run(); assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } + @Test void given_1() { setInput("1"); + new PyramidPrinter().run(); assertEquals("x", getOutputLines()[0]); } @@ -49,6 +58,7 @@ void given_1() { @Test void given_4() { setInput("4"); + new PyramidPrinter().run(); assertEquals("x", getOutputLines()[0]); assertEquals("xx", getOutputLines()[1]); diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java index 1c2604ca..70235d9b 100644 --- a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -3,39 +3,25 @@ import base.UnitBase; import org.junit.jupiter.api.Test; +import java.util.ArrayList; + import static org.junit.jupiter.api.Assertions.*; class RandomCharsTableTest extends UnitBase { - @Test - void given_correct_option_even() { - setInput("3 3 even"); - - new RandomCharsTable().run(); - String str = getOutputLines()[getOutputLines().length-1]; - for (Character character: str.toCharArray()){ - if(character % 2 == 1){ - fail(); - return; - } - } - assertTrue(true); - } - @Test void given_first_bad() { setInput("-1 1 even"); new RandomCharsTable().run(); - assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } + @Test void given_second_bad() { setInput("1 -31 odd"); new RandomCharsTable().run(); - assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } @@ -44,8 +30,39 @@ void given_last_bad() { setInput("1 -3 dfsdf"); new RandomCharsTable().run(); - assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } + @Test + void getResultCharTestEven() { + ArrayList array = new ArrayList<>(); + array.add(66); + array.add(86); + array.add(77); + array.add(88); + + assertEquals("Even letters - B,V,X", RandomCharsTable.getResultChar(array, true)); + } + + @Test + void getResultCharTestOdd() { + ArrayList array = new ArrayList<>(); + array.add(69); + array.add(67); + array.add(77); + array.add(88); + + assertEquals("Odd letters - E,C,M", RandomCharsTable.getResultChar(array, false)); + } + + @Test + void printTableTest() { + char[][] table = {{'H', 'A'}, {'F', 'T'}}; + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + randomCharsTable.printTable(table, 2, 2); + + assertEquals("|H|A|", getOutputLines()[0]); + assertEquals("|F|T|", getOutputLines()[1]); + } } \ No newline at end of file diff --git a/src/test/java/homework_2/traffic_light/TrafficLightTest.java b/src/test/java/homework_2/traffic_light/TrafficLightTest.java index 954746d5..4068c2e2 100644 --- a/src/test/java/homework_2/traffic_light/TrafficLightTest.java +++ b/src/test/java/homework_2/traffic_light/TrafficLightTest.java @@ -1,6 +1,65 @@ package homework_2.traffic_light; import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; public class TrafficLightTest extends UnitBase { + + @Test + void input_negative_6(){ + setInput("-6"); + + new Traffic_light().run(); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); + } + + @Test + void input_0(){ + setInput("0"); + + new Traffic_light().run(); + assertEquals("GREEN", getOutputLines()[0]); + } + + @Test + void input_5(){ + setInput("5"); + + new Traffic_light().run(); + assertEquals("GREEN", getOutputLines()[0]); + } + + @Test + void input_35(){ + setInput("35"); + + new Traffic_light().run(); + assertEquals("YELLOW", getOutputLines()[0]); + } + + @Test + void input_55(){ + setInput("54"); + + new Traffic_light().run(); + assertEquals("RED", getOutputLines()[0]); + } + + @Test + void input_86401(){ + setInput("86401"); + + new Traffic_light().run(); + assertEquals("The day is over", getOutputLines()[0]); + } + + @Test + void input_86466(){ + setInput("86466"); + + new Traffic_light().run(); + assertEquals("The day is over", getOutputLines()[0]); + } } From 0cf0418f4116dcf86b28c964d669764b5d7e8e5b Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 25 Jul 2021 13:02:04 +0300 Subject: [PATCH 28/92] ImmutableClass --- src/main/java/homework_3/ImmutableClass.java | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/java/homework_3/ImmutableClass.java diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java new file mode 100644 index 00000000..5574f6eb --- /dev/null +++ b/src/main/java/homework_3/ImmutableClass.java @@ -0,0 +1,43 @@ +package homework_3; + +/* Requirements for the Immutable Class: +* 1. Class has 2 constructors with 2 required fields +* 2. Fields cannot be changed, you only have geters; +* 3. You can get the same one ImmutableClass with the changed field "three", +* using the method getImmutableClass(). He back new ImmutableClass. +* */ + +public final class ImmutableClass { + + private final int one; + private final String two; + private final Character three; + + public ImmutableClass(int one, String two) { + this.one = one; + this.two = two; + this.three = 'A'; + } + + public ImmutableClass(int one, String two, Character three) { + this.one = one; + this.two = two; + this.three = three; + } + + public int getOne() { + return one; + } + + public String getTwo() { + return two; + } + + public Character getThree() { + return three; + } + + public ImmutableClass getImmutableClass(Character a){ + return new ImmutableClass(one, two, a); + } +} From ef29a978aa4550e4a05dea57a9fb15a9345ab28b Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 25 Jul 2021 13:02:58 +0300 Subject: [PATCH 29/92] readme change --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 04feb9f5..2a206685 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ | HW3 | [PyramidPrinterTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | | HW3 | [RandomCharsTableTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/random_chars_table) | Random chars table tests | | HW3 | [TrafficLightTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/traffic_light) | Traffic light tests| +| HW3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_3/ImmutableClass) | ImmutableClass| [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From dacf138d74199e904185812a6c5339248aa7c8f1 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 25 Jul 2021 13:04:50 +0300 Subject: [PATCH 30/92] hw1 change --- src/main/java/homework_1/Main.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index b8dac5a8..ef455615 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,14 +1,5 @@ package homework_1; -/* - * Main - * - * v2 - * - * Prihodko Dmitriy - */ - - public class Main { public static final String RED_COLOR = "\u001B[31m"; From 79fbb5d6b1e7a1640eeeed123a3f80ed68e70c25 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 25 Jul 2021 22:42:13 +0300 Subject: [PATCH 31/92] fix apps names --- src/main/java/homework_2/traffic_light/Main.java | 2 +- .../{Traffic_light.java => TrafficLight.java} | 2 +- .../homework_2/traffic_light/TrafficLightTest.java | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) rename src/main/java/homework_2/traffic_light/{Traffic_light.java => TrafficLight.java} (97%) diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index 904c0c96..4092147c 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -4,7 +4,7 @@ public class Main { public static void main(String[] args) { - new Traffic_light().run(); + new TrafficLight().run(); } } diff --git a/src/main/java/homework_2/traffic_light/Traffic_light.java b/src/main/java/homework_2/traffic_light/TrafficLight.java similarity index 97% rename from src/main/java/homework_2/traffic_light/Traffic_light.java rename to src/main/java/homework_2/traffic_light/TrafficLight.java index 2705425a..ed225b73 100644 --- a/src/main/java/homework_2/traffic_light/Traffic_light.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -4,7 +4,7 @@ import java.io.IOException; import java.io.InputStreamReader; -public class Traffic_light { +public class TrafficLight { public void run() { diff --git a/src/test/java/homework_2/traffic_light/TrafficLightTest.java b/src/test/java/homework_2/traffic_light/TrafficLightTest.java index 4068c2e2..097e1ef3 100644 --- a/src/test/java/homework_2/traffic_light/TrafficLightTest.java +++ b/src/test/java/homework_2/traffic_light/TrafficLightTest.java @@ -11,7 +11,7 @@ public class TrafficLightTest extends UnitBase { void input_negative_6(){ setInput("-6"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @@ -19,7 +19,7 @@ void input_negative_6(){ void input_0(){ setInput("0"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("GREEN", getOutputLines()[0]); } @@ -27,7 +27,7 @@ void input_0(){ void input_5(){ setInput("5"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("GREEN", getOutputLines()[0]); } @@ -35,7 +35,7 @@ void input_5(){ void input_35(){ setInput("35"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("YELLOW", getOutputLines()[0]); } @@ -43,7 +43,7 @@ void input_35(){ void input_55(){ setInput("54"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("RED", getOutputLines()[0]); } @@ -51,7 +51,7 @@ void input_55(){ void input_86401(){ setInput("86401"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("The day is over", getOutputLines()[0]); } @@ -59,7 +59,7 @@ void input_86401(){ void input_86466(){ setInput("86466"); - new Traffic_light().run(); + new TrafficLight().run(); assertEquals("The day is over", getOutputLines()[0]); } } From a55d59777feea080c1c5bc7987fb608eec140d7e Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Mon, 26 Jul 2021 18:29:40 +0300 Subject: [PATCH 32/92] RandomCharsTable fix 1 error --- .../java/homework_2/random_chars_table/RandomCharsTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 8ac5aad2..9c0b5cff 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -20,7 +20,7 @@ public void run() { y = Integer.parseInt(str[1]); word = str[2]; - if (x < 1 || y < 1 || !(word.equals("even") || word.equals("odd"))) { + if (x < 1 || y < 1 || !(word.equals("even") || word.equals("odd")) || str.length>3) { System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); return; } From 945224c7558c72e8fe24398067021e8ba12b879d Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 4 Aug 2021 23:37:34 +0300 Subject: [PATCH 33/92] main/resources/custom_file_reader --- .../custom_file_reader/CustomFileReader.java | 32 +++++++++++++++++++ .../homework_4/custom_file_reader/Main.java | 7 ++++ .../resources/custom_file_reader/test_file | 4 +++ 3 files changed, 43 insertions(+) create mode 100644 src/main/java/homework_4/custom_file_reader/CustomFileReader.java create mode 100644 src/main/java/homework_4/custom_file_reader/Main.java create mode 100644 src/main/resources/custom_file_reader/test_file diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java new file mode 100644 index 00000000..4edbe4ee --- /dev/null +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -0,0 +1,32 @@ +package homework_4.custom_file_reader; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class CustomFileReader { + public void run() { + Path filePath = Paths.get("main/resources/custom_file_reader/test_file.txt"); + + if (Files.exists(filePath)) { + try { + byte[] bytes = Files.readAllBytes(filePath); + String text = new String(bytes, StandardCharsets.UTF_8); + + System.out.println(text); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + public void run2() { + + } + + public void run3() { + + } +} diff --git a/src/main/java/homework_4/custom_file_reader/Main.java b/src/main/java/homework_4/custom_file_reader/Main.java new file mode 100644 index 00000000..f5116e77 --- /dev/null +++ b/src/main/java/homework_4/custom_file_reader/Main.java @@ -0,0 +1,7 @@ +package homework_4.custom_file_reader; + +public class Main { + public static void main(String[] args) { + new CustomFileReader().run(); + } +} diff --git a/src/main/resources/custom_file_reader/test_file b/src/main/resources/custom_file_reader/test_file new file mode 100644 index 00000000..5cb8dc8b --- /dev/null +++ b/src/main/resources/custom_file_reader/test_file @@ -0,0 +1,4 @@ +dytuukdt/./.hgjclkfy,,,dytu +fdjd,.,ifdyid +.m,j.//fdyldiu +jyfd,fy... From 14cc3d0edbf38ad38802e194cdbd8f2e86fc5866 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 11 Aug 2021 20:01:45 +0300 Subject: [PATCH 34/92] run 1 completed --- .../homework_4/custom_file_reader/CustomFileReader.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 4edbe4ee..155a1986 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -8,14 +8,14 @@ public class CustomFileReader { public void run() { - Path filePath = Paths.get("main/resources/custom_file_reader/test_file.txt"); + Path filePath = Paths.get("C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"); if (Files.exists(filePath)) { try { byte[] bytes = Files.readAllBytes(filePath); String text = new String(bytes, StandardCharsets.UTF_8); - - System.out.println(text); + String resul = text.replaceAll("[,.]", ""); + System.out.println(resul); } catch (IOException e) { throw new RuntimeException(e); } From 4a8a04149cdd271529abce608752988b0371b2d8 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 11 Aug 2021 20:31:42 +0300 Subject: [PATCH 35/92] run 1 completed run 2 completed run 3 completed --- .../custom_file_reader/CustomFileReader.java | 28 +++++++++++++++---- .../homework_4/custom_file_reader/Main.java | 6 ++-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 155a1986..5d595958 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -1,14 +1,16 @@ package homework_4.custom_file_reader; -import java.io.IOException; +import java.io.*; +import java.nio.CharBuffer; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class CustomFileReader { + private final Path filePath = Paths.get("C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"); + public void run() { - Path filePath = Paths.get("C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"); if (Files.exists(filePath)) { try { @@ -22,11 +24,27 @@ public void run() { } } - public void run2() { - + public void run2() throws IOException { + BufferedReader reader = new BufferedReader(new FileReader(String.valueOf(filePath))); + String string = ""; + while (reader.ready()){ + string += reader.readLine() + "\n"; + } + String resul = string.replaceAll("[,.]", ""); + System.out.println(resul); } - public void run3() { + public void run3() throws IOException { + FileReader reader = new FileReader(String.valueOf(filePath)); + StringBuffer stringBuffer = new StringBuffer(); + while (reader.ready()){ + int scan = reader.read(); + if(scan == ',' || scan == '.'){ + } else { + stringBuffer.append((char)scan); + } + } + System.out.println(stringBuffer); } } diff --git a/src/main/java/homework_4/custom_file_reader/Main.java b/src/main/java/homework_4/custom_file_reader/Main.java index f5116e77..9e160a31 100644 --- a/src/main/java/homework_4/custom_file_reader/Main.java +++ b/src/main/java/homework_4/custom_file_reader/Main.java @@ -1,7 +1,9 @@ package homework_4.custom_file_reader; +import java.io.IOException; + public class Main { - public static void main(String[] args) { - new CustomFileReader().run(); + public static void main(String[] args) throws IOException { + new CustomFileReader().run3(); } } From 9d4f3971d3e9450760efdc467ad59bc3e5d56ac7 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 11 Aug 2021 20:32:07 +0300 Subject: [PATCH 36/92] run 1 completed run 2 completed run 3 completed --- .../homework_4/custom_file_reader/CustomFileReader.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 5d595958..8db6fa85 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -26,11 +26,11 @@ public void run() { public void run2() throws IOException { BufferedReader reader = new BufferedReader(new FileReader(String.valueOf(filePath))); - String string = ""; + StringBuilder string = new StringBuilder(); while (reader.ready()){ - string += reader.readLine() + "\n"; + string.append(reader.readLine()).append("\n"); } - String resul = string.replaceAll("[,.]", ""); + String resul = string.toString().replaceAll("[,.]", ""); System.out.println(resul); } From 429eb93e8d22c13067df4520f327f523c2d6059c Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 11 Aug 2021 20:33:06 +0300 Subject: [PATCH 37/92] run 1 completed run 2 completed run 3 completed --- .../custom_file_reader/CustomFileReader.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 8db6fa85..944d89e9 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -25,11 +25,13 @@ public void run() { } public void run2() throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(String.valueOf(filePath))); - StringBuilder string = new StringBuilder(); - while (reader.ready()){ - string.append(reader.readLine()).append("\n"); - } + BufferedReader reader = new BufferedReader(new FileReader(String.valueOf(filePath))); + StringBuilder string = new StringBuilder(); + + while (reader.ready()) { + string.append(reader.readLine()).append("\n"); + } + String resul = string.toString().replaceAll("[,.]", ""); System.out.println(resul); } @@ -37,14 +39,16 @@ public void run2() throws IOException { public void run3() throws IOException { FileReader reader = new FileReader(String.valueOf(filePath)); StringBuffer stringBuffer = new StringBuffer(); - while (reader.ready()){ + + while (reader.ready()) { int scan = reader.read(); - if(scan == ',' || scan == '.'){ + if (scan == ',' || scan == '.') { } else { - stringBuffer.append((char)scan); + stringBuffer.append((char) scan); } } + System.out.println(stringBuffer); } } From f748716b55ed2792e8df4a267521ec0799d461bf Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 11 Aug 2021 20:44:27 +0300 Subject: [PATCH 38/92] run 1 completed run 2 completed run 3 completed --- .../custom_file_reader/CustomFileReader.java | 3 ++- .../CustomFileReaderTest.java | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 944d89e9..419132d5 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -31,7 +31,7 @@ public void run2() throws IOException { while (reader.ready()) { string.append(reader.readLine()).append("\n"); } - + reader.close(); String resul = string.toString().replaceAll("[,.]", ""); System.out.println(resul); } @@ -49,6 +49,7 @@ public void run3() throws IOException { } } + reader.close(); System.out.println(stringBuffer); } } diff --git a/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java new file mode 100644 index 00000000..2bd7eb6c --- /dev/null +++ b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java @@ -0,0 +1,21 @@ +package homework_4.custom_file_reader; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CustomFileReaderTest extends UnitBase { + + @Test + void run() { + } + + @Test + void run2() { + } + + @Test + void run3() { + } +} \ No newline at end of file From 907b55d47029b91a878691020d0ac617218401bb Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 11 Aug 2021 21:48:01 +0300 Subject: [PATCH 39/92] Singleton v1 --- src/test/java/homework_4/Singleton/Main.java | 9 +++++++++ .../java/homework_4/Singleton/Singleton.java | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/test/java/homework_4/Singleton/Main.java create mode 100644 src/test/java/homework_4/Singleton/Singleton.java diff --git a/src/test/java/homework_4/Singleton/Main.java b/src/test/java/homework_4/Singleton/Main.java new file mode 100644 index 00000000..ed0d5807 --- /dev/null +++ b/src/test/java/homework_4/Singleton/Main.java @@ -0,0 +1,9 @@ +package homework_4.Singleton; + +import com.sun.org.apache.xalan.internal.xsltc.dom.SingletonIterator; + +public class Main { + public static void main(String[] args) { + Singleton.getInstance(); + } +} diff --git a/src/test/java/homework_4/Singleton/Singleton.java b/src/test/java/homework_4/Singleton/Singleton.java new file mode 100644 index 00000000..09df1a2f --- /dev/null +++ b/src/test/java/homework_4/Singleton/Singleton.java @@ -0,0 +1,17 @@ +package homework_4.Singleton; + +public class Singleton { + + private static Singleton singleton; + + private Singleton() { + + } + + public static Singleton getInstance() { + if (singleton == null) { + return new Singleton(); + } + return singleton; + } +} From 311b50e7fd633a4782eba156cb60eb53940ced01 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Fri, 13 Aug 2021 00:29:42 +0300 Subject: [PATCH 40/92] Singleton test --- .../java/homework_4/Singleton/Main.java | 3 --- .../java/homework_4/Singleton/Singleton.java | 3 +-- .../homework_4/Singleton/SingletonTest.java | 17 +++++++++++++++++ 3 files changed, 18 insertions(+), 5 deletions(-) rename src/{test => main}/java/homework_4/Singleton/Main.java (50%) rename src/{test => main}/java/homework_4/Singleton/Singleton.java (86%) create mode 100644 src/test/java/homework_4/Singleton/SingletonTest.java diff --git a/src/test/java/homework_4/Singleton/Main.java b/src/main/java/homework_4/Singleton/Main.java similarity index 50% rename from src/test/java/homework_4/Singleton/Main.java rename to src/main/java/homework_4/Singleton/Main.java index ed0d5807..072beb6e 100644 --- a/src/test/java/homework_4/Singleton/Main.java +++ b/src/main/java/homework_4/Singleton/Main.java @@ -1,9 +1,6 @@ package homework_4.Singleton; -import com.sun.org.apache.xalan.internal.xsltc.dom.SingletonIterator; - public class Main { public static void main(String[] args) { - Singleton.getInstance(); } } diff --git a/src/test/java/homework_4/Singleton/Singleton.java b/src/main/java/homework_4/Singleton/Singleton.java similarity index 86% rename from src/test/java/homework_4/Singleton/Singleton.java rename to src/main/java/homework_4/Singleton/Singleton.java index 09df1a2f..c8ce05c3 100644 --- a/src/test/java/homework_4/Singleton/Singleton.java +++ b/src/main/java/homework_4/Singleton/Singleton.java @@ -5,12 +5,11 @@ public class Singleton { private static Singleton singleton; private Singleton() { - } public static Singleton getInstance() { if (singleton == null) { - return new Singleton(); + singleton = new Singleton(); } return singleton; } diff --git a/src/test/java/homework_4/Singleton/SingletonTest.java b/src/test/java/homework_4/Singleton/SingletonTest.java new file mode 100644 index 00000000..8c0234bb --- /dev/null +++ b/src/test/java/homework_4/Singleton/SingletonTest.java @@ -0,0 +1,17 @@ +package homework_4.Singleton; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class SingletonTest extends UnitBase { + + @Test + void equals_Singleton(){ + Singleton singleton1 = Singleton.getInstance(); + Singleton singleton2 = Singleton.getInstance(); + assertEquals(singleton1, singleton2); + } + +} \ No newline at end of file From e7ab5528f57a90a7b7088ce44b50cdefff83a93b Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 15 Aug 2021 17:16:42 +0300 Subject: [PATCH 41/92] homework4 --- .../homework_4/CustomAnnotation/Main.java | 10 ++++++ .../CustomAnnotation/MyAnnotation.java | 12 +++++++ .../MyTestAnnotationClass.java | 36 +++++++++++++++++++ .../custom_file_reader/CustomFileReader.java | 25 +++++++++---- .../homework_4/custom_file_reader/Main.java | 5 ++- .../resources/custom_file_reader/test_file | 7 ++-- .../MyTestAnnotationClassTest.java | 35 ++++++++++++++++++ .../CustomFileReaderTest.java | 35 +++++++++++++++--- 8 files changed, 149 insertions(+), 16 deletions(-) create mode 100644 src/main/java/homework_4/CustomAnnotation/Main.java create mode 100644 src/main/java/homework_4/CustomAnnotation/MyAnnotation.java create mode 100644 src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java create mode 100644 src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java diff --git a/src/main/java/homework_4/CustomAnnotation/Main.java b/src/main/java/homework_4/CustomAnnotation/Main.java new file mode 100644 index 00000000..67e883fa --- /dev/null +++ b/src/main/java/homework_4/CustomAnnotation/Main.java @@ -0,0 +1,10 @@ +package homework_4.CustomAnnotation; + +public class Main { + public static void main(String[] args) { + + MyTestAnnotationClass test = new MyTestAnnotationClass(); + System.out.println(test.getMyName()); + System.out.println(test.getAge()); + } +} diff --git a/src/main/java/homework_4/CustomAnnotation/MyAnnotation.java b/src/main/java/homework_4/CustomAnnotation/MyAnnotation.java new file mode 100644 index 00000000..7b791a34 --- /dev/null +++ b/src/main/java/homework_4/CustomAnnotation/MyAnnotation.java @@ -0,0 +1,12 @@ +package homework_4.CustomAnnotation; + + +import java.lang.annotation.*; + +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation { + String name() default "MySuperName"; + int age() default 2; +} diff --git a/src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java b/src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java new file mode 100644 index 00000000..f0c1f470 --- /dev/null +++ b/src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java @@ -0,0 +1,36 @@ +package homework_4.CustomAnnotation; + +@MyAnnotation +public class MyTestAnnotationClass { + + String myName; + int age; + + public MyTestAnnotationClass() { + myName = getClass().getAnnotation(MyAnnotation.class).name(); + age = this.getClass().getAnnotation(MyAnnotation.class).age(); + } + + public MyTestAnnotationClass(int age) { + myName = getClass().getAnnotation(MyAnnotation.class).name(); + this.age = age; + } + + public MyTestAnnotationClass(String myName) { + this.myName = myName; + age = this.getClass().getAnnotation(MyAnnotation.class).age(); + } + + public MyTestAnnotationClass(String myName, int age) { + this.myName = myName; + this.age = age; + } + + public int getAge() { + return age; + } + + public String getMyName() { + return myName; + } +} diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 419132d5..b2c17572 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -8,13 +8,14 @@ import java.nio.file.Paths; public class CustomFileReader { - private final Path filePath = Paths.get("C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"); + public String filePath = "C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"; public void run() { + if (filePath == null) return; - if (Files.exists(filePath)) { + if (Files.exists(Paths.get(filePath))) { try { - byte[] bytes = Files.readAllBytes(filePath); + byte[] bytes = Files.readAllBytes(Paths.get(filePath)); String text = new String(bytes, StandardCharsets.UTF_8); String resul = text.replaceAll("[,.]", ""); System.out.println(resul); @@ -25,7 +26,9 @@ public void run() { } public void run2() throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(String.valueOf(filePath))); + if (filePath == null) return; + + BufferedReader reader = new BufferedReader(new FileReader(filePath)); StringBuilder string = new StringBuilder(); while (reader.ready()) { @@ -37,7 +40,9 @@ public void run2() throws IOException { } public void run3() throws IOException { - FileReader reader = new FileReader(String.valueOf(filePath)); + if (filePath == null) return; + + FileReader reader = new FileReader(filePath); StringBuffer stringBuffer = new StringBuffer(); while (reader.ready()) { @@ -48,8 +53,16 @@ public void run3() throws IOException { stringBuffer.append((char) scan); } } - reader.close(); System.out.println(stringBuffer); } + + //test helper + public void changeFileText(String text) throws IOException { + FileWriter writer = new FileWriter(filePath); + if (text == null) return; + writer.write(text); + writer.close(); + } + } diff --git a/src/main/java/homework_4/custom_file_reader/Main.java b/src/main/java/homework_4/custom_file_reader/Main.java index 9e160a31..9660e7ba 100644 --- a/src/main/java/homework_4/custom_file_reader/Main.java +++ b/src/main/java/homework_4/custom_file_reader/Main.java @@ -4,6 +4,9 @@ public class Main { public static void main(String[] args) throws IOException { - new CustomFileReader().run3(); + CustomFileReader reader = new CustomFileReader(); + reader.run(); + reader.run2(); + reader.run3(); } } diff --git a/src/main/resources/custom_file_reader/test_file b/src/main/resources/custom_file_reader/test_file index 5cb8dc8b..c7838189 100644 --- a/src/main/resources/custom_file_reader/test_file +++ b/src/main/resources/custom_file_reader/test_file @@ -1,4 +1,3 @@ -dytuukdt/./.hgjclkfy,,,dytu -fdjd,.,ifdyid -.m,j.//fdyldiu -jyfd,fy... +t.e,,w +r,,3,,,g +a,,,d...3 \ No newline at end of file diff --git a/src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java b/src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java new file mode 100644 index 00000000..a4be82ea --- /dev/null +++ b/src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java @@ -0,0 +1,35 @@ +package homework_4.CustomAnnotation; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class MyTestAnnotationClassTest extends UnitBase { + + @Test + void Empty_Const() { + MyTestAnnotationClass myClass = new MyTestAnnotationClass(); + assertEquals("MySuperName", myClass.getMyName()); + assertEquals(2, myClass.getAge()); + } + + @Test + void Name_Const() { + MyTestAnnotationClass myClass = new MyTestAnnotationClass("Stepan"); + assertEquals("Stepan", myClass.getMyName()); + assertEquals(2, myClass.getAge()); + } + @Test + void Age_Const() { + MyTestAnnotationClass myClass = new MyTestAnnotationClass(44); + assertEquals("MySuperName", myClass.getMyName()); + assertEquals(44, myClass.getAge()); + } + @Test + void Full_Const() { + MyTestAnnotationClass myClass = new MyTestAnnotationClass("Anna", 33); + assertEquals("Anna", myClass.getMyName()); + assertEquals(33, myClass.getAge()); + } +} \ No newline at end of file diff --git a/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java index 2bd7eb6c..ff6ff9d0 100644 --- a/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java +++ b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java @@ -3,19 +3,44 @@ import base.UnitBase; import org.junit.jupiter.api.Test; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Path; + import static org.junit.jupiter.api.Assertions.*; class CustomFileReaderTest extends UnitBase { @Test - void run() { + void test() throws IOException { + CustomFileReader reader = new CustomFileReader(); + String text = "t.e,,w\nr,,3,,,g\na,,,d...3"; + reader.changeFileText(text); + reader.run(); + assertEquals("tew", getOutputLines()[0]); + assertEquals("r3g", getOutputLines()[1]); + assertEquals("ad3", getOutputLines()[2]); + reader.run2(); + assertEquals("tew", getOutputLines()[0]); + assertEquals("r3g", getOutputLines()[1]); + assertEquals("ad3", getOutputLines()[2]); + reader.run3(); + assertEquals("tew", getOutputLines()[0]); + assertEquals("r3g", getOutputLines()[1]); + assertEquals("ad3", getOutputLines()[2]); } @Test - void run2() { + void text_empty () throws IOException { + CustomFileReader reader = new CustomFileReader(); + String text = ""; + reader.changeFileText(text); + reader.run(); + assertEquals("", getOutputLines()[0]); + reader.run2(); + assertEquals("", getOutputLines()[0]); + reader.run3(); + assertEquals("", getOutputLines()[0]); } - @Test - void run3() { - } } \ No newline at end of file From 8c56e8d277f5e402d0949c10acf9eecd6c615971 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 15 Aug 2021 17:25:55 +0300 Subject: [PATCH 42/92] change readme --- README.md | 3 +++ .../{CustomAnnotation => custom_annotation}/Main.java | 2 +- .../{CustomAnnotation => custom_annotation}/MyAnnotation.java | 2 +- .../MyTestAnnotationClass.java | 2 +- src/main/java/homework_4/{Singleton => singleton}/Main.java | 2 +- .../java/homework_4/{Singleton => singleton}/Singleton.java | 2 +- .../MyTestAnnotationClassTest.java | 2 +- .../homework_4/{Singleton => singleton}/SingletonTest.java | 2 +- 8 files changed, 10 insertions(+), 7 deletions(-) rename src/main/java/homework_4/{CustomAnnotation => custom_annotation}/Main.java (85%) rename src/main/java/homework_4/{CustomAnnotation => custom_annotation}/MyAnnotation.java (84%) rename src/main/java/homework_4/{CustomAnnotation => custom_annotation}/MyTestAnnotationClass.java (95%) rename src/main/java/homework_4/{Singleton => singleton}/Main.java (71%) rename src/main/java/homework_4/{Singleton => singleton}/Singleton.java (89%) rename src/test/java/homework_4/{CustomAnnotation => custom_annotation}/MyTestAnnotationClassTest.java (96%) rename src/test/java/homework_4/{Singleton => singleton}/SingletonTest.java (92%) diff --git a/README.md b/README.md index 2a206685..d5be86c4 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ | HW3 | [RandomCharsTableTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/random_chars_table) | Random chars table tests | | HW3 | [TrafficLightTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/traffic_light) | Traffic light tests| | HW3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_3/ImmutableClass) | ImmutableClass| +| HW4 | [CustomFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/custom_file_reader) | This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| HW4 | [CustomAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/custom_annotation) | Create custom annotation| +| HW4 | [Singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) diff --git a/src/main/java/homework_4/CustomAnnotation/Main.java b/src/main/java/homework_4/custom_annotation/Main.java similarity index 85% rename from src/main/java/homework_4/CustomAnnotation/Main.java rename to src/main/java/homework_4/custom_annotation/Main.java index 67e883fa..9d72ac61 100644 --- a/src/main/java/homework_4/CustomAnnotation/Main.java +++ b/src/main/java/homework_4/custom_annotation/Main.java @@ -1,4 +1,4 @@ -package homework_4.CustomAnnotation; +package homework_4.custom_annotation; public class Main { public static void main(String[] args) { diff --git a/src/main/java/homework_4/CustomAnnotation/MyAnnotation.java b/src/main/java/homework_4/custom_annotation/MyAnnotation.java similarity index 84% rename from src/main/java/homework_4/CustomAnnotation/MyAnnotation.java rename to src/main/java/homework_4/custom_annotation/MyAnnotation.java index 7b791a34..a97a5126 100644 --- a/src/main/java/homework_4/CustomAnnotation/MyAnnotation.java +++ b/src/main/java/homework_4/custom_annotation/MyAnnotation.java @@ -1,4 +1,4 @@ -package homework_4.CustomAnnotation; +package homework_4.custom_annotation; import java.lang.annotation.*; diff --git a/src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java b/src/main/java/homework_4/custom_annotation/MyTestAnnotationClass.java similarity index 95% rename from src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java rename to src/main/java/homework_4/custom_annotation/MyTestAnnotationClass.java index f0c1f470..15d808a1 100644 --- a/src/main/java/homework_4/CustomAnnotation/MyTestAnnotationClass.java +++ b/src/main/java/homework_4/custom_annotation/MyTestAnnotationClass.java @@ -1,4 +1,4 @@ -package homework_4.CustomAnnotation; +package homework_4.custom_annotation; @MyAnnotation public class MyTestAnnotationClass { diff --git a/src/main/java/homework_4/Singleton/Main.java b/src/main/java/homework_4/singleton/Main.java similarity index 71% rename from src/main/java/homework_4/Singleton/Main.java rename to src/main/java/homework_4/singleton/Main.java index 072beb6e..204d56fb 100644 --- a/src/main/java/homework_4/Singleton/Main.java +++ b/src/main/java/homework_4/singleton/Main.java @@ -1,4 +1,4 @@ -package homework_4.Singleton; +package homework_4.singleton; public class Main { public static void main(String[] args) { diff --git a/src/main/java/homework_4/Singleton/Singleton.java b/src/main/java/homework_4/singleton/Singleton.java similarity index 89% rename from src/main/java/homework_4/Singleton/Singleton.java rename to src/main/java/homework_4/singleton/Singleton.java index c8ce05c3..76ee741f 100644 --- a/src/main/java/homework_4/Singleton/Singleton.java +++ b/src/main/java/homework_4/singleton/Singleton.java @@ -1,4 +1,4 @@ -package homework_4.Singleton; +package homework_4.singleton; public class Singleton { diff --git a/src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java b/src/test/java/homework_4/custom_annotation/MyTestAnnotationClassTest.java similarity index 96% rename from src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java rename to src/test/java/homework_4/custom_annotation/MyTestAnnotationClassTest.java index a4be82ea..c9746d3e 100644 --- a/src/test/java/homework_4/CustomAnnotation/MyTestAnnotationClassTest.java +++ b/src/test/java/homework_4/custom_annotation/MyTestAnnotationClassTest.java @@ -1,4 +1,4 @@ -package homework_4.CustomAnnotation; +package homework_4.custom_annotation; import base.UnitBase; import org.junit.jupiter.api.Test; diff --git a/src/test/java/homework_4/Singleton/SingletonTest.java b/src/test/java/homework_4/singleton/SingletonTest.java similarity index 92% rename from src/test/java/homework_4/Singleton/SingletonTest.java rename to src/test/java/homework_4/singleton/SingletonTest.java index 8c0234bb..d44ab3f3 100644 --- a/src/test/java/homework_4/Singleton/SingletonTest.java +++ b/src/test/java/homework_4/singleton/SingletonTest.java @@ -1,4 +1,4 @@ -package homework_4.Singleton; +package homework_4.singleton; import base.UnitBase; import org.junit.jupiter.api.Test; From 4417eccce5eb6f4a378346478d8d66a9ba09a50f Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 15 Aug 2021 23:35:19 +0300 Subject: [PATCH 43/92] fix --- .../homework_4/custom_file_reader/CustomFileReader.java | 7 ++----- src/main/java/homework_4/custom_file_reader/Main.java | 2 +- src/main/java/homework_4/singleton/Main.java | 6 ------ .../custom_file_reader/CustomFileReaderTest.java | 6 ++---- 4 files changed, 5 insertions(+), 16 deletions(-) delete mode 100644 src/main/java/homework_4/singleton/Main.java diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index b2c17572..2b883ebf 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -8,10 +8,9 @@ import java.nio.file.Paths; public class CustomFileReader { - public String filePath = "C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"; + private final String filePath = "C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"; - public void run() { - if (filePath == null) return; + public void run1() { if (Files.exists(Paths.get(filePath))) { try { @@ -26,7 +25,6 @@ public void run() { } public void run2() throws IOException { - if (filePath == null) return; BufferedReader reader = new BufferedReader(new FileReader(filePath)); StringBuilder string = new StringBuilder(); @@ -40,7 +38,6 @@ public void run2() throws IOException { } public void run3() throws IOException { - if (filePath == null) return; FileReader reader = new FileReader(filePath); StringBuffer stringBuffer = new StringBuffer(); diff --git a/src/main/java/homework_4/custom_file_reader/Main.java b/src/main/java/homework_4/custom_file_reader/Main.java index 9660e7ba..3376f163 100644 --- a/src/main/java/homework_4/custom_file_reader/Main.java +++ b/src/main/java/homework_4/custom_file_reader/Main.java @@ -5,7 +5,7 @@ public class Main { public static void main(String[] args) throws IOException { CustomFileReader reader = new CustomFileReader(); - reader.run(); + reader.run1(); reader.run2(); reader.run3(); } diff --git a/src/main/java/homework_4/singleton/Main.java b/src/main/java/homework_4/singleton/Main.java deleted file mode 100644 index 204d56fb..00000000 --- a/src/main/java/homework_4/singleton/Main.java +++ /dev/null @@ -1,6 +0,0 @@ -package homework_4.singleton; - -public class Main { - public static void main(String[] args) { - } -} diff --git a/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java index ff6ff9d0..45deba91 100644 --- a/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java +++ b/src/test/java/homework_4/custom_file_reader/CustomFileReaderTest.java @@ -3,9 +3,7 @@ import base.UnitBase; import org.junit.jupiter.api.Test; -import java.io.FileWriter; import java.io.IOException; -import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.*; @@ -16,7 +14,7 @@ void test() throws IOException { CustomFileReader reader = new CustomFileReader(); String text = "t.e,,w\nr,,3,,,g\na,,,d...3"; reader.changeFileText(text); - reader.run(); + reader.run1(); assertEquals("tew", getOutputLines()[0]); assertEquals("r3g", getOutputLines()[1]); assertEquals("ad3", getOutputLines()[2]); @@ -35,7 +33,7 @@ void text_empty () throws IOException { CustomFileReader reader = new CustomFileReader(); String text = ""; reader.changeFileText(text); - reader.run(); + reader.run1(); assertEquals("", getOutputLines()[0]); reader.run2(); assertEquals("", getOutputLines()[0]); From 98d014c9907fce78fe36dac5a59955dd6d167a3c Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 21 Aug 2021 13:32:59 +0300 Subject: [PATCH 44/92] hw5 --- .../CustomRegexMatcher.java | 28 ++++++++++++++++ .../homework_5/custom_regex_matcher/Main.java | 7 ++++ .../java/homework_5/power_of_number/Main.java | 7 ++++ .../power_of_number/PowerOfNumber.java | 33 +++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java create mode 100644 src/main/java/homework_5/custom_regex_matcher/Main.java create mode 100644 src/main/java/homework_5/power_of_number/Main.java create mode 100644 src/main/java/homework_5/power_of_number/PowerOfNumber.java diff --git a/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java new file mode 100644 index 00000000..5d758ea5 --- /dev/null +++ b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java @@ -0,0 +1,28 @@ +package homework_5.custom_regex_matcher; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CustomRegexMatcher { + + public void run() { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ + + System.out.println(regex(reader.readLine())); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + private boolean regex(String readLine) { + boolean result = readLine.matches("\\d"); + + return result; + } + +} diff --git a/src/main/java/homework_5/custom_regex_matcher/Main.java b/src/main/java/homework_5/custom_regex_matcher/Main.java new file mode 100644 index 00000000..f8b52c06 --- /dev/null +++ b/src/main/java/homework_5/custom_regex_matcher/Main.java @@ -0,0 +1,7 @@ +package homework_5.custom_regex_matcher; + +public class Main { + public static void main(String[] args) { + new CustomRegexMatcher().run(); + } +} diff --git a/src/main/java/homework_5/power_of_number/Main.java b/src/main/java/homework_5/power_of_number/Main.java new file mode 100644 index 00000000..930f2040 --- /dev/null +++ b/src/main/java/homework_5/power_of_number/Main.java @@ -0,0 +1,7 @@ +package homework_5.power_of_number; + +public class Main { + public static void main(String[] args) { + new PowerOfNumber().run(); + } +} diff --git a/src/main/java/homework_5/power_of_number/PowerOfNumber.java b/src/main/java/homework_5/power_of_number/PowerOfNumber.java new file mode 100644 index 00000000..9c810ade --- /dev/null +++ b/src/main/java/homework_5/power_of_number/PowerOfNumber.java @@ -0,0 +1,33 @@ +package homework_5.power_of_number; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class PowerOfNumber { + + public void run() { + + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + String[] input = reader.readLine().split(" "); + int a = Integer.parseInt(input[0]); + int b = Integer.parseInt(input[1]); + if (a < 0 || b < 0) { + System.out.println("Only 2 non-negative integers are allowed"); + return; + } + System.out.println(recursia(a, b)); + } catch (NumberFormatException e) { + System.out.println("Only 2 non-negative integers are allowed"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private long recursia(int a, int b) { + if (a == 0) return 0; + if (a == 1 || b == 0) return 1; + if (b == 1) return a; + return a * recursia(a, b - 1); + } +} From 88f645866d686b05682abbb441fe415f2fc3a1fa Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Mon, 23 Aug 2021 15:30:09 +0300 Subject: [PATCH 45/92] hw5 --- README.md | 2 + .../CustomRegexMatcher.java | 13 ++- .../power_of_number/PowerOfNumber.java | 4 +- .../CustomRegexMatcherTest.java | 78 ++++++++++++++++++ .../power_of_number/PowerOfNumberTest.java | 79 +++++++++++++++++++ 5 files changed, 166 insertions(+), 10 deletions(-) create mode 100644 src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java create mode 100644 src/test/java/homework_5/power_of_number/PowerOfNumberTest.java diff --git a/README.md b/README.md index d5be86c4..48a64c8d 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ | HW4 | [CustomFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/custom_file_reader) | This application reads the text from the file, removes commas and periods and them outputs the text to the console. | | HW4 | [CustomAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/custom_annotation) | Create custom annotation| | HW4 | [Singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| +| HW5 | [CustomRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_5/custom_regex_matcher) | This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/power_of_number) | This app checks whether the email is entered correctly.| [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) diff --git a/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java index 5d758ea5..8de765e0 100644 --- a/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java +++ b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java @@ -9,20 +9,19 @@ public class CustomRegexMatcher { public void run() { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ - + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + System.out.println("Regex Email: "); System.out.println(regex(reader.readLine())); - + } catch (NullPointerException e) { + System.out.println(regex("")); } catch (IOException e) { e.printStackTrace(); } - } private boolean regex(String readLine) { - boolean result = readLine.matches("\\d"); - - return result; + if (readLine.length() < 3) return false; + return readLine.matches("(\\w+)@((mail)|(gmail)|(google)|(other)).([a-z]+)"); } } diff --git a/src/main/java/homework_5/power_of_number/PowerOfNumber.java b/src/main/java/homework_5/power_of_number/PowerOfNumber.java index 9c810ade..aa1fe21b 100644 --- a/src/main/java/homework_5/power_of_number/PowerOfNumber.java +++ b/src/main/java/homework_5/power_of_number/PowerOfNumber.java @@ -17,10 +17,8 @@ public void run() { return; } System.out.println(recursia(a, b)); - } catch (NumberFormatException e) { + } catch (NullPointerException | IOException | NumberFormatException e) { System.out.println("Only 2 non-negative integers are allowed"); - } catch (IOException e) { - e.printStackTrace(); } } diff --git a/src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java b/src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java new file mode 100644 index 00000000..ca581acf --- /dev/null +++ b/src/test/java/homework_5/custom_regex_matcher/CustomRegexMatcherTest.java @@ -0,0 +1,78 @@ +package homework_5.custom_regex_matcher; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CustomRegexMatcherTest extends UnitBase { + @Test + void zero_test() { + setInput(""); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void one_test() { + setInput("1"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void normal_test() { + setInput("t@mail.com"); + new CustomRegexMatcher().run(); + assertEquals("true", getOutputLines()[1]); + } + + @Test + void address_bad_test1() { + setInput("t@mai.com"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void address_bad_test2() { + setInput("h55t@mail.44tm"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void address_bad_test3() { + setInput("4hht@mai.com"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void address_bad_test4() { + setInput("@mai.com"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void address_bad_test5() { + setInput("mai.comdfdf@frg"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void address_bad_test6() { + setInput("maic@@mail.com"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } + + @Test + void address_bad_test7() { + setInput("maic@mail..com"); + new CustomRegexMatcher().run(); + assertEquals("false", getOutputLines()[1]); + } +} \ No newline at end of file diff --git a/src/test/java/homework_5/power_of_number/PowerOfNumberTest.java b/src/test/java/homework_5/power_of_number/PowerOfNumberTest.java new file mode 100644 index 00000000..7ab2022e --- /dev/null +++ b/src/test/java/homework_5/power_of_number/PowerOfNumberTest.java @@ -0,0 +1,79 @@ +package homework_5.power_of_number; + +import base.UnitBase; +import homework_5.custom_regex_matcher.CustomRegexMatcher; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class PowerOfNumberTest extends UnitBase { + @Test + void zero_test() { + setInput(""); + new PowerOfNumber().run(); + assertEquals("Only 2 non-negative integers are allowed", getOutputLines()[0]); + } + + @Test + void bad_test() { + setInput("546 ftd"); + new PowerOfNumber().run(); + assertEquals("Only 2 non-negative integers are allowed", getOutputLines()[0]); + } + + @Test + void negative_test() { + setInput("-3 3"); + new PowerOfNumber().run(); + assertEquals("Only 2 non-negative integers are allowed", getOutputLines()[0]); + } + + @Test + void zero_one_test() { + setInput("0 1"); + new PowerOfNumber().run(); + assertEquals("0", getOutputLines()[0]); + } + + @Test + void one_one_test() { + setInput("1 1"); + new PowerOfNumber().run(); + assertEquals("1", getOutputLines()[0]); + } + + @Test + void one_ten_test() { + setInput("1 10"); + new PowerOfNumber().run(); + assertEquals("1", getOutputLines()[0]); + } + + @Test + void two_two_test() { + setInput("2 2"); + new PowerOfNumber().run(); + assertEquals("4", getOutputLines()[0]); + } + + @Test + void two_four_test() { + setInput("2 4"); + new PowerOfNumber().run(); + assertEquals("16", getOutputLines()[0]); + } + + @Test + void ten_two_test() { + setInput("10 2"); + new PowerOfNumber().run(); + assertEquals("100", getOutputLines()[0]); + } + + @Test + void ten_three_test() { + setInput("10 3"); + new PowerOfNumber().run(); + assertEquals("1000", getOutputLines()[0]); + } +} \ No newline at end of file From d3c5b809b8905c64f8df3fc794f6dcfa32a103d4 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 29 Aug 2021 17:41:46 +0300 Subject: [PATCH 46/92] =?UTF-8?q?=D0=BC6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ .../MapProblemsGenerator.java | 27 +++++++++++++++ .../map_problems_generator/MutableClass.java | 33 +++++++++++++++++++ .../MapProblemsGeneratorTest.java | 9 +++++ .../MutableClassTest.java | 9 +++++ 5 files changed, 80 insertions(+) create mode 100644 src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java create mode 100644 src/main/java/homework_6/map_problems_generator/MutableClass.java create mode 100644 src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java create mode 100644 src/test/java/homework_6/map_problems_generator/MutableClassTest.java diff --git a/README.md b/README.md index 48a64c8d..c8c8f0d8 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ | HW4 | [Singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| | HW5 | [CustomRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_5/custom_regex_matcher) | This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| | HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/power_of_number) | This app checks whether the email is entered correctly.| +| HW6 | [MapProblemsGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| HW6 | [MutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) diff --git a/src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java b/src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java new file mode 100644 index 00000000..474ec522 --- /dev/null +++ b/src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java @@ -0,0 +1,27 @@ +package homework_6.map_problems_generator; + +public class MapProblemsGenerator { + + private int a; + + public MapProblemsGenerator(int a) { + this.a = a; + } + + public int getA() { + return a; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MapProblemsGenerator that = (MapProblemsGenerator) o; + return a == that.a; + } + + @Override + public int hashCode() { + return 1; + } +} diff --git a/src/main/java/homework_6/map_problems_generator/MutableClass.java b/src/main/java/homework_6/map_problems_generator/MutableClass.java new file mode 100644 index 00000000..0bbcca83 --- /dev/null +++ b/src/main/java/homework_6/map_problems_generator/MutableClass.java @@ -0,0 +1,33 @@ +package homework_6.map_problems_generator; + +import java.util.Random; + +public class MutableClass { + + private int a; + + public MutableClass(int a) { + this.a = a; + } + + public int getA() { + return a; + } + + public void setA(int a) { + this.a = a; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MutableClass that = (MutableClass) o; + return a == that.a; + } + + @Override + public int hashCode() { + return new Random().nextInt(Integer.MAX_VALUE-1); + } +} diff --git a/src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java b/src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java new file mode 100644 index 00000000..e6b2b0bf --- /dev/null +++ b/src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java @@ -0,0 +1,9 @@ +package homework_6.map_problems_generator; + +import base.UnitBase; + +import static org.junit.jupiter.api.Assertions.*; + +class MapProblemsGeneratorTest extends UnitBase { + +} \ No newline at end of file diff --git a/src/test/java/homework_6/map_problems_generator/MutableClassTest.java b/src/test/java/homework_6/map_problems_generator/MutableClassTest.java new file mode 100644 index 00000000..d2908cb6 --- /dev/null +++ b/src/test/java/homework_6/map_problems_generator/MutableClassTest.java @@ -0,0 +1,9 @@ +package homework_6.map_problems_generator; + +import base.UnitBase; + +import static org.junit.jupiter.api.Assertions.*; + +class MutableClassTest extends UnitBase { + +} \ No newline at end of file From 8c9e1517c7f37a0deb56f498c8810f0e51f8fcf5 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 29 Aug 2021 19:21:21 +0300 Subject: [PATCH 47/92] v6.2 --- .../map_problems_generator/MutableClass.java | 5 +++++ .../map_problems_generator/MutableClassTest.java | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/homework_6/map_problems_generator/MutableClass.java b/src/main/java/homework_6/map_problems_generator/MutableClass.java index 0bbcca83..95c32313 100644 --- a/src/main/java/homework_6/map_problems_generator/MutableClass.java +++ b/src/main/java/homework_6/map_problems_generator/MutableClass.java @@ -18,6 +18,11 @@ public void setA(int a) { this.a = a; } + @Override + public String toString() { + return String.valueOf(a); + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/test/java/homework_6/map_problems_generator/MutableClassTest.java b/src/test/java/homework_6/map_problems_generator/MutableClassTest.java index d2908cb6..8a29470b 100644 --- a/src/test/java/homework_6/map_problems_generator/MutableClassTest.java +++ b/src/test/java/homework_6/map_problems_generator/MutableClassTest.java @@ -1,9 +1,21 @@ package homework_6.map_problems_generator; import base.UnitBase; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; import static org.junit.jupiter.api.Assertions.*; class MutableClassTest extends UnitBase { + @Test + void testMutable() { + HashMap hMap = new HashMap<>(); + MutableClass mutableClass = new MutableClass(33); + hMap.put(mutableClass, 1); + assertNull(hMap.get(mutableClass)); + + } + } \ No newline at end of file From 90da94e24f39bf69d3df186995e479389b5836f7 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Mon, 30 Aug 2021 21:14:37 +0300 Subject: [PATCH 48/92] v6.3 --- ...ava => MapProblemsCollisionGenerator.java} | 8 +++---- ....java => MapProblemsMutableGenerator.java} | 6 +++--- .../MapProblemsGeneratorTest.java | 9 -------- .../MutableClassTest.java | 21 ------------------- 4 files changed, 7 insertions(+), 37 deletions(-) rename src/main/java/homework_6/map_problems_generator/{MapProblemsGenerator.java => MapProblemsCollisionGenerator.java} (66%) rename src/main/java/homework_6/map_problems_generator/{MutableClass.java => MapProblemsMutableGenerator.java} (78%) delete mode 100644 src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java delete mode 100644 src/test/java/homework_6/map_problems_generator/MutableClassTest.java diff --git a/src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java b/src/main/java/homework_6/map_problems_generator/MapProblemsCollisionGenerator.java similarity index 66% rename from src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java rename to src/main/java/homework_6/map_problems_generator/MapProblemsCollisionGenerator.java index 474ec522..bf1e89cd 100644 --- a/src/main/java/homework_6/map_problems_generator/MapProblemsGenerator.java +++ b/src/main/java/homework_6/map_problems_generator/MapProblemsCollisionGenerator.java @@ -1,10 +1,10 @@ package homework_6.map_problems_generator; -public class MapProblemsGenerator { +public class MapProblemsCollisionGenerator { private int a; - public MapProblemsGenerator(int a) { + public MapProblemsCollisionGenerator(int a) { this.a = a; } @@ -16,12 +16,12 @@ public int getA() { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - MapProblemsGenerator that = (MapProblemsGenerator) o; + MapProblemsCollisionGenerator that = (MapProblemsCollisionGenerator) o; return a == that.a; } @Override public int hashCode() { - return 1; + return 0; } } diff --git a/src/main/java/homework_6/map_problems_generator/MutableClass.java b/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java similarity index 78% rename from src/main/java/homework_6/map_problems_generator/MutableClass.java rename to src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java index 95c32313..699c6a58 100644 --- a/src/main/java/homework_6/map_problems_generator/MutableClass.java +++ b/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java @@ -2,11 +2,11 @@ import java.util.Random; -public class MutableClass { +public class MapProblemsMutableGenerator { private int a; - public MutableClass(int a) { + public MapProblemsMutableGenerator(int a) { this.a = a; } @@ -27,7 +27,7 @@ public String toString() { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - MutableClass that = (MutableClass) o; + MapProblemsMutableGenerator that = (MapProblemsMutableGenerator) o; return a == that.a; } diff --git a/src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java b/src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java deleted file mode 100644 index e6b2b0bf..00000000 --- a/src/test/java/homework_6/map_problems_generator/MapProblemsGeneratorTest.java +++ /dev/null @@ -1,9 +0,0 @@ -package homework_6.map_problems_generator; - -import base.UnitBase; - -import static org.junit.jupiter.api.Assertions.*; - -class MapProblemsGeneratorTest extends UnitBase { - -} \ No newline at end of file diff --git a/src/test/java/homework_6/map_problems_generator/MutableClassTest.java b/src/test/java/homework_6/map_problems_generator/MutableClassTest.java deleted file mode 100644 index 8a29470b..00000000 --- a/src/test/java/homework_6/map_problems_generator/MutableClassTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package homework_6.map_problems_generator; - -import base.UnitBase; -import org.junit.jupiter.api.Test; - -import java.util.HashMap; - -import static org.junit.jupiter.api.Assertions.*; - -class MutableClassTest extends UnitBase { - - @Test - void testMutable() { - HashMap hMap = new HashMap<>(); - MutableClass mutableClass = new MutableClass(33); - hMap.put(mutableClass, 1); - assertNull(hMap.get(mutableClass)); - - } - -} \ No newline at end of file From 0faa0dd5338fe043c33f70a74026dda1b7dee04b Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Mon, 30 Aug 2021 21:28:43 +0300 Subject: [PATCH 49/92] v6.3 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c8c8f0d8..362fc141 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ | HW4 | [Singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| | HW5 | [CustomRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_5/custom_regex_matcher) | This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| | HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/power_of_number) | This app checks whether the email is entered correctly.| -| HW6 | [MapProblemsGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| HW6 | [MutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +| HW6 | [MapProblemsCollisionGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| HW6 | [MapProblemsMutableGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From 757527b7eca3c40919d982694910e9e75e37b33a Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 31 Aug 2021 23:32:26 +0300 Subject: [PATCH 50/92] README.md changev1 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 362fc141..a58d95f3 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ | Number | Solution | Short description | --- | --- | --- | + | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [TrafficLight](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| HW2 | [PyramidPrinter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/pyramid_printer) | App reads the number one time from the command line, and prints a pyramid of "x". | +| HW2 | [PyramidPrinter](./src/main/java/homework_2/traffic_light) | App reads the number one time from the command line, and prints a pyramid of "x". | | HW2 | [RandomCharsTable](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/random_chars_table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | | HW3 | [PyramidPrinterTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | | HW3 | [RandomCharsTableTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/random_chars_table) | Random chars table tests | From 00a33efc708e4e905d9e0a1be7437a3605bb97f0 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 31 Aug 2021 23:33:15 +0300 Subject: [PATCH 51/92] README.md changev2 --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a58d95f3..6dc4fffa 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ | Number | Solution | Short description | --- | --- | --- | - | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [TrafficLight](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| | HW2 | [PyramidPrinter](./src/main/java/homework_2/traffic_light) | App reads the number one time from the command line, and prints a pyramid of "x". | From b1ed477d09a141232f61589d3784e3e758230430 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 31 Aug 2021 23:39:58 +0300 Subject: [PATCH 52/92] README.md changev3 --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 6dc4fffa..84e753e5 100644 --- a/README.md +++ b/README.md @@ -4,22 +4,22 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/DmitriyPrihodko/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [TrafficLight](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| HW2 | [PyramidPrinter](./src/main/java/homework_2/traffic_light) | App reads the number one time from the command line, and prints a pyramid of "x". | -| HW2 | [RandomCharsTable](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_2/random_chars_table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| HW3 | [PyramidPrinterTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | -| HW3 | [RandomCharsTableTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/random_chars_table) | Random chars table tests | -| HW3 | [TrafficLightTest](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_2/traffic_light) | Traffic light tests| -| HW3 | [ImmutableClass](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_3/ImmutableClass) | ImmutableClass| -| HW4 | [CustomFileReader](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/custom_file_reader) | This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| HW4 | [CustomAnnotation](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/custom_annotation) | Create custom annotation| -| HW4 | [Singleton](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| -| HW5 | [CustomRegexMatcher](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_5/custom_regex_matcher) | This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| HW5 | [PowerOfNumber](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/test/java/homework_4/power_of_number) | This app checks whether the email is entered correctly.| -| HW6 | [MapProblemsCollisionGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| HW6 | [MapProblemsMutableGenerator](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/DmitriyPrihodko/src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +| HW1 | [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer) | App reads the number one time from the command line, and prints a pyramid of "x". | +| HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| HW2 | [PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | +| HW2 | [RandomCharsTableTest](./src/test/java/homework_2/random_chars_table) | Random chars table tests | +| HW2 | [TrafficLightTest](./src/test/java/homework_2/traffic_light) | Traffic light tests| +| HW3 | [ImmutableClass](./src/test/java/homework_3/ImmutableClass) | ImmutableClass| +| HW4 | [CustomFileReader](./src/test/java/homework_4/custom_file_reader) | This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| HW4 | [CustomAnnotation](./src/test/java/homework_4/custom_annotation) | Create custom annotation| +| HW4 | [Singleton](./src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| +| HW5 | [CustomRegexMatcher](./src/test/java/homework_5/custom_regex_matcher) | This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| HW5 | [PowerOfNumber](./src/test/java/homework_4/power_of_number) | This app checks whether the email is entered correctly.| +| HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) -[Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) + From 94ef46f65acf541e034abf73c0f997e5baead268 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 31 Aug 2021 23:42:54 +0300 Subject: [PATCH 53/92] README.md changev4 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 84e753e5..fa210ae6 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,11 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| | HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer) | App reads the number one time from the command line, and prints a pyramid of "x". | | HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | | HW2 | [PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | | HW2 | [RandomCharsTableTest](./src/test/java/homework_2/random_chars_table) | Random chars table tests | -| HW2 | [TrafficLightTest](./src/test/java/homework_2/traffic_light) | Traffic light tests| | HW3 | [ImmutableClass](./src/test/java/homework_3/ImmutableClass) | ImmutableClass| | HW4 | [CustomFileReader](./src/test/java/homework_4/custom_file_reader) | This application reads the text from the file, removes commas and periods and them outputs the text to the console. | | HW4 | [CustomAnnotation](./src/test/java/homework_4/custom_annotation) | Create custom annotation| From 9254b73d0c92079be499fa491d047cc7bef91b99 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 31 Aug 2021 23:53:15 +0300 Subject: [PATCH 54/92] README.md changev5 --- README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fa210ae6..ef6ff2f2 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,14 @@ | --- | --- | --- | | HW1 | [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer) | App reads the number one time from the command line, and prints a pyramid of "x". | -| HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table) | App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| HW2 | [PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer) | Pyramid printer tests | -| HW2 | [RandomCharsTableTest](./src/test/java/homework_2/random_chars_table) | Random chars table tests | -| HW3 | [ImmutableClass](./src/test/java/homework_3/ImmutableClass) | ImmutableClass| -| HW4 | [CustomFileReader](./src/test/java/homework_4/custom_file_reader) | This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| HW4 | [CustomAnnotation](./src/test/java/homework_4/custom_annotation) | Create custom annotation| -| HW4 | [Singleton](./src/test/java/homework_4/singleton) | This is a singleton app. you can create only 1 instance of this class.| -| HW5 | [CustomRegexMatcher](./src/test/java/homework_5/custom_regex_matcher) | This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| HW5 | [PowerOfNumber](./src/test/java/homework_4/power_of_number) | This app checks whether the email is entered correctly.| +| HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | +| HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| HW3 | [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| +| HW4 | [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| HW4 | [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| +| HW4 | [Singleton](./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| +| HW5 | [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| HW5 | [PowerOfNumber](./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| | HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| | HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | From 65ae690578b84c38b3ae05c7ee47ca04109afd76 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 31 Aug 2021 23:57:51 +0300 Subject: [PATCH 55/92] README.md changev6 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ef6ff2f2..f8d61e9a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW1 HW1 | [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| | HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | | HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | From e8be92ad25669545980861d7a4e01a5a664348b8 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 00:03:22 +0300 Subject: [PATCH 56/92] README.md changev6 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f8d61e9a..ea452862 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 HW1 | [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +|:white_check_mark: HW1| [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| | HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | | HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | From eda53726c995b3d01d7abe87b90813009bcb0b09 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 00:06:24 +0300 Subject: [PATCH 57/92] README.md changev6 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea452862..3455b062 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Number | Solution | Short description | --- | --- | --- | -|:white_check_mark: HW1| [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +|:one:HW1| [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| | HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | | HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | From e61d330f0a78e114d7a5b607469578da1fb84c21 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 00:08:23 +0300 Subject: [PATCH 58/92] README.md changev6 --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3455b062..0eb8af26 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,17 @@ | Number | Solution | Short description | --- | --- | --- | |:one:HW1| [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | -| HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| HW3 | [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| -| HW4 | [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| HW4 | [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| -| HW4 | [Singleton](./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| -| HW5 | [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| HW5 | [PowerOfNumber](./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| -| HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +| :two:HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| :two:HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | +| :two:HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| :three:HW3 | [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| +| :four:HW4 | [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| :four:HW4 | [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| +| :four:HW4 | [Singleton](./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| +| :five:HW5 | [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| :five:HW5 | [PowerOfNumber](./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| +| :six:HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| :six:HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From 3c0c5d0b40d672a8d64669172d2b53b614a0d5a3 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 00:11:30 +0300 Subject: [PATCH 59/92] README.md changev7 --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 0eb8af26..01498c6d 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,18 @@ | Number | Solution | Short description | --- | --- | --- | -|:one:HW1| [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| :two:HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| :two:HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | -| :two:HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| :three:HW3 | [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| -| :four:HW4 | [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| :four:HW4 | [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| -| :four:HW4 | [Singleton](./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| -| :five:HW5 | [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| :five:HW5 | [PowerOfNumber](./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| -| :six:HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| :six:HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +|:one:HW1| [Console printer]:small_orange_diamond:(./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| :two:HW2 | [TrafficLight]:small_orange_diamond:(./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| :two:HW2 | [PyramidPrinter]:small_orange_diamond:(./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | +| :two:HW2 | [RandomCharsTable]:small_orange_diamond:(./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| :three:HW3 | [ImmutableClass]:small_orange_diamond:(./src/main/java/homework_3/ImmutableClass)| ImmutableClass| +| :four:HW4 | [CustomFileReader]:small_orange_diamond:(./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| :four:HW4 | [CustomAnnotation]:small_orange_diamond:(./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| +| :four:HW4 | [Singleton]:small_orange_diamond:(./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| +| :five:HW5 | [CustomRegexMatcher]:small_orange_diamond:(./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| :five:HW5 | [PowerOfNumber]:small_orange_diamond:(./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| +| :six:HW6 | [MapProblemsCollisionGenerator]:small_orange_diamond:(./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| :six:HW6 | [MapProblemsMutableGenerator]:small_orange_diamond:(./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From c4cde6ad266e9e0f88c85f028301b86dafef1e1f Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 00:12:54 +0300 Subject: [PATCH 60/92] README.md changev8 --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 01498c6d..cd5405a4 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,18 @@ | Number | Solution | Short description | --- | --- | --- | -|:one:HW1| [Console printer]:small_orange_diamond:(./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| :two:HW2 | [TrafficLight]:small_orange_diamond:(./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| :two:HW2 | [PyramidPrinter]:small_orange_diamond:(./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | -| :two:HW2 | [RandomCharsTable]:small_orange_diamond:(./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| :three:HW3 | [ImmutableClass]:small_orange_diamond:(./src/main/java/homework_3/ImmutableClass)| ImmutableClass| -| :four:HW4 | [CustomFileReader]:small_orange_diamond:(./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| :four:HW4 | [CustomAnnotation]:small_orange_diamond:(./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| -| :four:HW4 | [Singleton]:small_orange_diamond:(./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| -| :five:HW5 | [CustomRegexMatcher]:small_orange_diamond:(./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| :five:HW5 | [PowerOfNumber]:small_orange_diamond:(./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| -| :six:HW6 | [MapProblemsCollisionGenerator]:small_orange_diamond:(./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| :six:HW6 | [MapProblemsMutableGenerator]:small_orange_diamond:(./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +|:one:HW1|:small_orange_diamond: [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| :two:HW2 |:small_orange_diamond: [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| :two:HW2 |:small_orange_diamond: [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | +| :two:HW2 |:small_orange_diamond: [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| :three:HW3 |:small_orange_diamond: [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| +| :four:HW4 |:small_orange_diamond: [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| :four:HW4 |:small_orange_diamond: [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| +| :four:HW4 |:small_orange_diamond: [Singleton](./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| +| :five:HW5 |:small_orange_diamond: [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| :five:HW5 |:small_orange_diamond: [PowerOfNumber](./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| +| :six:HW6 |:small_orange_diamond: [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| :six:HW6 |:small_orange_diamond: [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From 87a20cb8a0fb39f2cb46b90b29da9b39938dc9cc Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 00:15:13 +0300 Subject: [PATCH 61/92] README.md changev9 --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cd5405a4..983e9729 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,17 @@ | Number | Solution | Short description | --- | --- | --- | |:one:HW1|:small_orange_diamond: [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| :two:HW2 |:small_orange_diamond: [TrafficLight](./src/main/java/homework_2/traffic_light)
[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| :two:HW2 |:small_orange_diamond: [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | -| :two:HW2 |:small_orange_diamond: [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| :two:HW2 |:small_orange_diamond: [TrafficLight](./src/main/java/homework_2/traffic_light)
:wrench:[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| :two:HW2 |:small_orange_diamond: [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
:wrench:[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | +| :two:HW2 |:small_orange_diamond: [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
:wrench:[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | | :three:HW3 |:small_orange_diamond: [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| -| :four:HW4 |:small_orange_diamond: [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| :four:HW4 |:small_orange_diamond: [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| -| :four:HW4 |:small_orange_diamond: [Singleton](./src/main/java/homework_4/singleton)
[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| -| :five:HW5 |:small_orange_diamond: [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| :five:HW5 |:small_orange_diamond: [PowerOfNumber](./src/main/java/homework_4/power_of_number)
[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| -| :six:HW6 |:small_orange_diamond: [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| :six:HW6 |:small_orange_diamond: [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +| :four:HW4 |:small_orange_diamond: [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
:wrench:[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| :four:HW4 |:small_orange_diamond: [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
:wrench:[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| +| :four:HW4 |:small_orange_diamond: [Singleton](./src/main/java/homework_4/singleton)
:wrench:[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| +| :five:HW5 |:small_orange_diamond: [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
:wrench:[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| :five:HW5 |:small_orange_diamond: [PowerOfNumber](./src/main/java/homework_4/power_of_number)
:wrench:[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| +| :six:HW6 |:small_orange_diamond:[MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| :six:HW6 |:small_orange_diamond:[MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From 53a28c108c2a2fe04b06df0aa785f282ca585e4b Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 1 Sep 2021 21:37:17 +0300 Subject: [PATCH 62/92] Course Project generated --- src/main/java/course_project/Main.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/course_project/Main.java diff --git a/src/main/java/course_project/Main.java b/src/main/java/course_project/Main.java new file mode 100644 index 00000000..24995f84 --- /dev/null +++ b/src/main/java/course_project/Main.java @@ -0,0 +1,7 @@ +package course_project; + +public class Main { + public static void main(String[] args) { + + } +} From 2bcf251c4a84a21b6d71ddd7c8a20f8b993b3f11 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 11:50:01 +0300 Subject: [PATCH 63/92] Course Project fields and add ship complete --- src/main/java/course_project/Main.java | 7 --- .../java/course_project/sea_battle/Main.java | 10 ++++ .../sea_battle/conroller/SeaBattle.java | 19 +++++++ .../sea_battle/model/Field.java | 30 ++++++++++++ .../sea_battle/model/Player.java | 21 ++++++++ .../course_project/sea_battle/model/Ship.java | 29 +++++++++++ .../sea_battle/model/Ships.java | 7 +++ .../sea_battle/model/ShipsGame.java | 49 +++++++++++++++++++ .../sea_battle/view/PaintFieldPlayer.java | 30 ++++++++++++ 9 files changed, 195 insertions(+), 7 deletions(-) delete mode 100644 src/main/java/course_project/Main.java create mode 100644 src/main/java/course_project/sea_battle/Main.java create mode 100644 src/main/java/course_project/sea_battle/conroller/SeaBattle.java create mode 100644 src/main/java/course_project/sea_battle/model/Field.java create mode 100644 src/main/java/course_project/sea_battle/model/Player.java create mode 100644 src/main/java/course_project/sea_battle/model/Ship.java create mode 100644 src/main/java/course_project/sea_battle/model/Ships.java create mode 100644 src/main/java/course_project/sea_battle/model/ShipsGame.java create mode 100644 src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java diff --git a/src/main/java/course_project/Main.java b/src/main/java/course_project/Main.java deleted file mode 100644 index 24995f84..00000000 --- a/src/main/java/course_project/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package course_project; - -public class Main { - public static void main(String[] args) { - - } -} diff --git a/src/main/java/course_project/sea_battle/Main.java b/src/main/java/course_project/sea_battle/Main.java new file mode 100644 index 00000000..bdcba757 --- /dev/null +++ b/src/main/java/course_project/sea_battle/Main.java @@ -0,0 +1,10 @@ +package course_project.sea_battle; + +import course_project.sea_battle.conroller.SeaBattle; + +public class Main { + public static void main(String[] args) { + SeaBattle game = new SeaBattle(); + game.run(); + } +} diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java new file mode 100644 index 00000000..0b93a3f4 --- /dev/null +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -0,0 +1,19 @@ +package course_project.sea_battle.conroller; + +import course_project.sea_battle.model.Field; +import course_project.sea_battle.model.Player; +import course_project.sea_battle.model.Ship; +import course_project.sea_battle.view.PaintFieldPlayer; + +public class SeaBattle { + + public void run() { + Player player = new Player("Rico", new Field(10,10)); + player.getPlayerFild().addShip(new Ship(true, new int[]{2,2}, 4)); + player.getPlayerFild().addShip(new Ship(true, new int[]{4,6}, 3)); + player.getPlayerFild().addShip(new Ship(false, new int[]{0,0}, 3)); + PaintFieldPlayer paintPlayerField = new PaintFieldPlayer(player); + //Thread paintTread = new Thread(); + paintPlayerField.paintField(); + } +} diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java new file mode 100644 index 00000000..4a47601d --- /dev/null +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -0,0 +1,30 @@ +package course_project.sea_battle.model; + +public class Field { + + int[][] field; + + public Field(int a, int b) { + field = new int[a][b]; + for (int i = 0; i < a; i++) { + for (int j = 0; j < b; j++) { + field[i][j] = 0; + } + } + } + + public void addShip(Ship ship){ + int[] a = ship.getPosition(); + for(int i = 0; i < ship.getSize(); i++){ + if (ship.getOrientation()) { + field[a[0]+i][a[1]] = 5; + } else field[a[0]][a[1]+i] = 5; + } + + } + + public int[][] getField() { + return field; + } + +} diff --git a/src/main/java/course_project/sea_battle/model/Player.java b/src/main/java/course_project/sea_battle/model/Player.java new file mode 100644 index 00000000..4f482d98 --- /dev/null +++ b/src/main/java/course_project/sea_battle/model/Player.java @@ -0,0 +1,21 @@ +package course_project.sea_battle.model; + +public class Player { + + String name; + Field playerFild; + + public Player(String name, Field playerFild) { + this.name = name; + this.playerFild = playerFild; + } + + public String getName() { + return name; + } + + public Field getPlayerFild() { + return playerFild; + } + +} diff --git a/src/main/java/course_project/sea_battle/model/Ship.java b/src/main/java/course_project/sea_battle/model/Ship.java new file mode 100644 index 00000000..acb10e56 --- /dev/null +++ b/src/main/java/course_project/sea_battle/model/Ship.java @@ -0,0 +1,29 @@ +package course_project.sea_battle.model; + +public class Ship implements Ships { + + private boolean orientation; + int[] startPosition; + int size; + + public Ship(boolean orientation, int[] startPosition, int size) { + this.orientation = orientation; + this.startPosition = startPosition; + this.size = size; + } + + @Override + public int[] getPosition() { + return startPosition; + } + + @Override + public boolean getOrientation() { + return orientation; + } + + @Override + public int getSize() { + return size; + } +} diff --git a/src/main/java/course_project/sea_battle/model/Ships.java b/src/main/java/course_project/sea_battle/model/Ships.java new file mode 100644 index 00000000..1e590c79 --- /dev/null +++ b/src/main/java/course_project/sea_battle/model/Ships.java @@ -0,0 +1,7 @@ +package course_project.sea_battle.model; + +public interface Ships { + int[] getPosition(); + boolean getOrientation(); + int getSize(); +} diff --git a/src/main/java/course_project/sea_battle/model/ShipsGame.java b/src/main/java/course_project/sea_battle/model/ShipsGame.java new file mode 100644 index 00000000..64959f07 --- /dev/null +++ b/src/main/java/course_project/sea_battle/model/ShipsGame.java @@ -0,0 +1,49 @@ +package course_project.sea_battle.model; + +import course_project.sea_battle.model.Ships; + +import java.util.ArrayList; +import java.util.List; + +public class ShipsGame { + + List ones = new ArrayList<>(); + List twos = new ArrayList<>(); + List trees = new ArrayList<>(); + List fours = new ArrayList<>(); + + public ShipsGame() { + } + + public List getOnes() { + return ones; + } + + public void setOnes(List ones) { + this.ones = ones; + } + + public List getTwos() { + return twos; + } + + public void setTwos(List twos) { + this.twos = twos; + } + + public List getTrees() { + return trees; + } + + public void setTrees(List trees) { + this.trees = trees; + } + + public List getFours() { + return fours; + } + + public void setFours(List fours) { + this.fours = fours; + } +} diff --git a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java new file mode 100644 index 00000000..b893a7e9 --- /dev/null +++ b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java @@ -0,0 +1,30 @@ +package course_project.sea_battle.view; + +import course_project.sea_battle.model.Player; + +public class PaintFieldPlayer { + + Player player; + + public PaintFieldPlayer(Player player) { + this.player = player; + } + //9972 ships 9967 shot (char) 9949 + public void paintField() { + System.out.println(player.getName() + " field: "); + System.out.println(" A B C D E F J H I G"); + for (int i = 0; i < 10; i++) { + if (i == 9) System.out.print((i + 1) + " "); + else System.out.print((i + 1) + " "); + for (int j = 0; j < 10; j++) { + int current = player.getPlayerFild().getField()[i][j]; + char paint = (char) 9949; + if(current==5) paint = (char) 9972; + System.out.print(" " + paint + " "); + } + System.out.println(); + } + } + + +} From 361dce80342315a7361ace3bdb65c26acd4b86a0 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 16:16:28 +0300 Subject: [PATCH 64/92] piramid fix whitespace --- src/main/java/course_project/sea_battle/Main.java | 2 ++ .../sea_battle/conroller/SeaBattle.java | 9 ++++++--- .../java/course_project/sea_battle/model/Field.java | 3 ++- .../java/course_project/sea_battle/model/Player.java | 4 ++++ .../sea_battle/view/PaintFieldPlayer.java | 11 +++++++++++ .../homework_2/pyramid_printer/PyramidPrinter.java | 8 -------- 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/main/java/course_project/sea_battle/Main.java b/src/main/java/course_project/sea_battle/Main.java index bdcba757..795bbb48 100644 --- a/src/main/java/course_project/sea_battle/Main.java +++ b/src/main/java/course_project/sea_battle/Main.java @@ -2,6 +2,8 @@ import course_project.sea_battle.conroller.SeaBattle; +import java.io.IOException; + public class Main { public static void main(String[] args) { SeaBattle game = new SeaBattle(); diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index 0b93a3f4..7caa36a3 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -5,13 +5,16 @@ import course_project.sea_battle.model.Ship; import course_project.sea_battle.view.PaintFieldPlayer; +import java.io.IOException; + public class SeaBattle { public void run() { Player player = new Player("Rico", new Field(10,10)); - player.getPlayerFild().addShip(new Ship(true, new int[]{2,2}, 4)); - player.getPlayerFild().addShip(new Ship(true, new int[]{4,6}, 3)); - player.getPlayerFild().addShip(new Ship(false, new int[]{0,0}, 3)); + player.addShip(new Ship(true, new int[]{2,2}, 4)); + player.addShip(new Ship(true, new int[]{4,6}, 3)); + player.addShip(new Ship(false, new int[]{0,0}, 3)); + player.addShip(new Ship(false, new int[]{7,7}, 2)); PaintFieldPlayer paintPlayerField = new PaintFieldPlayer(player); //Thread paintTread = new Thread(); paintPlayerField.paintField(); diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index 4a47601d..ee271350 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -13,13 +13,14 @@ public Field(int a, int b) { } } - public void addShip(Ship ship){ + public boolean addShip(Ship ship){ int[] a = ship.getPosition(); for(int i = 0; i < ship.getSize(); i++){ if (ship.getOrientation()) { field[a[0]+i][a[1]] = 5; } else field[a[0]][a[1]+i] = 5; } + return true; } diff --git a/src/main/java/course_project/sea_battle/model/Player.java b/src/main/java/course_project/sea_battle/model/Player.java index 4f482d98..f35a8bff 100644 --- a/src/main/java/course_project/sea_battle/model/Player.java +++ b/src/main/java/course_project/sea_battle/model/Player.java @@ -18,4 +18,8 @@ public Field getPlayerFild() { return playerFild; } + public boolean addShip(Ship ship){ + return playerFild.addShip(ship); + } + } diff --git a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java index b893a7e9..4555f690 100644 --- a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java +++ b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java @@ -2,6 +2,8 @@ import course_project.sea_battle.model.Player; +import java.io.IOException; + public class PaintFieldPlayer { Player player; @@ -11,7 +13,16 @@ public PaintFieldPlayer(Player player) { } //9972 ships 9967 shot (char) 9949 public void paintField() { + System.out.println(player.getName() + " field: "); +// char col = 'A'; +// System.out.print(" "); +// for (int i = 0; i < 10; i++){ +// +// System.out.printf("%-3.7s", col); +// +// } +// System.out.println(); System.out.println(" A B C D E F J H I G"); for (int i = 0; i < 10; i++) { if (i == 9) System.out.print((i + 1) + " "); diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 4a0a7791..fd0455b4 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -4,33 +4,25 @@ import java.io.InputStreamReader; public class PyramidPrinter { - public void run() { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { int x = Integer.parseInt(reader.readLine()); if (x <= 0) { System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } - printPyramid(x); - } catch (Exception e) { System.out.println("Only 1 non-negative integer is allowed as passed parameter"); } - } public static void printPyramid(int score) { - for (int i = 1; i <= score; i++) { for (int j = 0; j < i; j++) { System.out.print("x"); } System.out.println(); } - } - } From ebd192f1cfd459cb31aa47e1c1025df34e44c4ff Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 16:21:43 +0300 Subject: [PATCH 65/92] piramid fix whitespace --- .../java/homework_2/random_chars_table/RandomCharsTable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 9c0b5cff..fe02912c 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -63,13 +63,13 @@ public static String getResultChar(ArrayList words, boolean even) { result += words.stream().filter(i -> i % 2 == 0) .distinct() .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(",")); + .collect(Collectors.joining(", ")); } else { result = "Odd letters - "; result += words.stream().filter(i -> i % 2 == 1) .distinct() .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(",")); + .collect(Collectors.joining(", ")); } return result; } From 4935b4167665f64f7cf9397debfd8023f296eef9 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 16:23:33 +0300 Subject: [PATCH 66/92] random fix whitespace --- .../java/homework_2/random_chars_table/RandomCharsTable.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index fe02912c..978be357 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -6,9 +6,7 @@ import java.util.stream.Collectors; public class RandomCharsTable { - public void run() { - int x; int y; String word; @@ -83,5 +81,4 @@ public void printTable(char[][] table, int x, int y) { System.out.println(); } } - } From d33165f50ec06e5204ddcce2a3f6ea00a828de53 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 16:24:59 +0300 Subject: [PATCH 67/92] random fix whitespace --- .../homework_2/random_chars_table/RandomCharsTable.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 978be357..c574ee9a 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -61,13 +61,15 @@ public static String getResultChar(ArrayList words, boolean even) { result += words.stream().filter(i -> i % 2 == 0) .distinct() .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(", ")); + .collect(Collectors.joining(", ")) + .trim(); } else { result = "Odd letters - "; result += words.stream().filter(i -> i % 2 == 1) .distinct() .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(", ")); + .collect(Collectors.joining(", ")) + .trim(); } return result; } From 07e267c35db640d9827afbcbf45f909a7bbc33ec Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 16:28:59 +0300 Subject: [PATCH 68/92] random fix whitespace1 --- .../homework_2/random_chars_table/RandomCharsTableTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java index 70235d9b..efe4846c 100644 --- a/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java +++ b/src/test/java/homework_2/random_chars_table/RandomCharsTableTest.java @@ -41,7 +41,7 @@ void getResultCharTestEven() { array.add(77); array.add(88); - assertEquals("Even letters - B,V,X", RandomCharsTable.getResultChar(array, true)); + assertEquals("Even letters - B, V, X", RandomCharsTable.getResultChar(array, true)); } @Test @@ -52,7 +52,7 @@ void getResultCharTestOdd() { array.add(77); array.add(88); - assertEquals("Odd letters - E,C,M", RandomCharsTable.getResultChar(array, false)); + assertEquals("Odd letters - E, C, M", RandomCharsTable.getResultChar(array, false)); } @Test From 6fbb5da59c24cf2f13ef72d66c7d2e171878f74f Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 16:36:18 +0300 Subject: [PATCH 69/92] random fix whitespace1 --- .../random_chars_table/RandomCharsTable.java | 5 +++-- .../traffic_light/TrafficLight.java | 21 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index c574ee9a..6c3e342a 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -18,7 +18,7 @@ public void run() { y = Integer.parseInt(str[1]); word = str[2]; - if (x < 1 || y < 1 || !(word.equals("even") || word.equals("odd")) || str.length>3) { + if (x < 1 || y < 1 || !(word.equals("even") || word.equals("odd")) || str.length > 3) { System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); return; } @@ -43,7 +43,8 @@ public void run() { if (word.equals("even")) { System.out.println(getResultChar(words, true)); - } if(word.equals("odd")) { + } + if (word.equals("odd")) { System.out.println(getResultChar(words, false)); } else { System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); diff --git a/src/main/java/homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java index ed225b73..921440a5 100644 --- a/src/main/java/homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -9,14 +9,16 @@ public class TrafficLight { public void run() { int seconds; - try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ + int result; + + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { seconds = Integer.parseInt(reader.readLine()); - if(seconds>86399) { + if (seconds > 86399) { System.out.println("The day is over"); return; } - if(seconds<0) { + if (seconds < 0) { System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } @@ -25,18 +27,15 @@ public void run() { return; } - int result; - - if(seconds>60) { + if (seconds > 60) { result = seconds % 60; - } - else result = seconds; + } else result = seconds; - if (result<35){ + if (result < 35) { System.out.println("GREEN"); - } else if(result<40){ + } else if (result < 40) { System.out.println("YELLOW"); - } else if(result<55){ + } else if (result < 55) { System.out.println("RED"); } else { System.out.println("YELLOW"); From ef6378a2185d9e08b897fc24e74c050f5ded1a70 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 2 Sep 2021 17:12:17 +0300 Subject: [PATCH 70/92] fix --- build.gradle | 3 +-- .../sea_battle/view/PaintFieldPlayer.java | 20 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index f01c40a2..84cf5a18 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,7 @@ repositories { } dependencies { - implementation 'junit:junit:4.13.1' - implementation 'org.junit.jupiter:junit-jupiter:5.7.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' } diff --git a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java index 4555f690..2bc6b485 100644 --- a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java +++ b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java @@ -15,15 +15,15 @@ public PaintFieldPlayer(Player player) { public void paintField() { System.out.println(player.getName() + " field: "); -// char col = 'A'; -// System.out.print(" "); -// for (int i = 0; i < 10; i++){ -// -// System.out.printf("%-3.7s", col); -// -// } -// System.out.println(); - System.out.println(" A B C D E F J H I G"); + char col = 'A'; + System.out.print(" "); + for (int i = 0; i < 10; i++){ + + System.out.printf("%-4s", (char)(col+i)); + + } + System.out.println(); + //System.out.println(" A B C D E F J H I G"); for (int i = 0; i < 10; i++) { if (i == 9) System.out.print((i + 1) + " "); else System.out.print((i + 1) + " "); @@ -31,7 +31,7 @@ public void paintField() { int current = player.getPlayerFild().getField()[i][j]; char paint = (char) 9949; if(current==5) paint = (char) 9972; - System.out.print(" " + paint + " "); + System.out.printf("%-3s", paint); } System.out.println(); } From 3c55f6aab40604c5b4b3006b42dd3d9cf4b32acb Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 7 Sep 2021 20:33:12 +0300 Subject: [PATCH 71/92] fix RandomCharsTable --- .../random_chars_table/RandomCharsTable.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index 6c3e342a..cc16bc36 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -3,6 +3,7 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.function.Predicate; import java.util.stream.Collectors; public class RandomCharsTable { @@ -57,21 +58,19 @@ public static int getRandomNumber() { public static String getResultChar(ArrayList words, boolean even) { String result; + Predicate predicate; if (even) { result = "Even letters - "; - result += words.stream().filter(i -> i % 2 == 0) - .distinct() - .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(", ")) - .trim(); + predicate = i -> i % 2 == 0; } else { result = "Odd letters - "; - result += words.stream().filter(i -> i % 2 == 1) - .distinct() - .map(i -> String.valueOf((char) i.intValue())) - .collect(Collectors.joining(", ")) - .trim(); + predicate = i -> i % 2 == 1; } + result += words.stream().filter(predicate) + .distinct() + .map(i -> String.valueOf((char) i.intValue())) + .collect(Collectors.joining(", ")) + .trim(); return result; } From 337e316881d690b9f4416b4b9af156b1137c8d73 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 7 Sep 2021 20:37:10 +0300 Subject: [PATCH 72/92] fix RandomCharsTable del else --- .../java/homework_2/random_chars_table/RandomCharsTable.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java index cc16bc36..64b83d42 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -47,8 +47,6 @@ public void run() { } if (word.equals("odd")) { System.out.println(getResultChar(words, false)); - } else { - System.out.println("Passed parameters should match the format [positive integer] [positive integer] [even|odd]"); } } From 3e96d071f821f96f2e53ef04495201fa122004d0 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 8 Sep 2021 00:34:54 +0300 Subject: [PATCH 73/92] add reader class --- .../java/course_project/sea_battle/Main.java | 2 +- .../sea_battle/conroller/Dialog.java | 78 ++++++++++++ .../sea_battle/conroller/SeaBattle.java | 38 ++++-- .../sea_battle/model/Field.java | 116 +++++++++++++++++- .../sea_battle/model/Player.java | 33 ++++- .../course_project/sea_battle/model/Ship.java | 59 +++++++-- .../sea_battle/model/Ships.java | 6 +- .../sea_battle/model/ShipsGame.java | 53 ++++---- .../sea_battle/view/PaintFieldPlayer.java | 30 ++--- .../sea_battle/view/Speaker.java | 23 ++++ 10 files changed, 363 insertions(+), 75 deletions(-) create mode 100644 src/main/java/course_project/sea_battle/conroller/Dialog.java create mode 100644 src/main/java/course_project/sea_battle/view/Speaker.java diff --git a/src/main/java/course_project/sea_battle/Main.java b/src/main/java/course_project/sea_battle/Main.java index 795bbb48..3695e7e5 100644 --- a/src/main/java/course_project/sea_battle/Main.java +++ b/src/main/java/course_project/sea_battle/Main.java @@ -5,7 +5,7 @@ import java.io.IOException; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { SeaBattle game = new SeaBattle(); game.run(); } diff --git a/src/main/java/course_project/sea_battle/conroller/Dialog.java b/src/main/java/course_project/sea_battle/conroller/Dialog.java new file mode 100644 index 00000000..f55e3720 --- /dev/null +++ b/src/main/java/course_project/sea_battle/conroller/Dialog.java @@ -0,0 +1,78 @@ +package course_project.sea_battle.conroller; + +import course_project.sea_battle.model.Player; +import course_project.sea_battle.model.Ship; +import course_project.sea_battle.view.Speaker; + +import java.io.BufferedReader; +import java.io.IOException; + +public class Dialog { + + private final BufferedReader reader; + + public Dialog(final BufferedReader reader) { + this.reader = reader; + } + + public Ship reader() { + try { + + String dateShip = reader.readLine(); + if (dateShip.matches("[1-2] [0-9][0]* [0-9][0]* [1-4]")) { + String[] dateShipSplit = dateShip.split(" "); + boolean orient = dateShipSplit[0].equals("2"); + int start = Integer.parseInt(dateShipSplit[1]) - 1; + int end = Integer.parseInt(dateShipSplit[2]) - 1; + int size = Integer.parseInt(dateShipSplit[3]); + if (start >= 0 && start <= 9 && end >= 0 && end <= 9 && size >= 1 && size <= 4) { + return new Ship(orient, start, end, size); + } + + } else { + System.out.println("Not correct data:"); + } + } catch (IOException e) { + System.out.println("Not correct data"); + } + return null; + } + + public String namePlayerGet() { + try { + String name = reader.readLine(); + return name; + } catch (Exception e) { + + } + return "Bad Name"; + } + + public String shotPlayer(Player player) { + try { + String shot = reader.readLine(); + if (shot.matches("[0-9][0]* [0-9][0]*")) { + String shotSpek = player.shot(shot); + switch (shotSpek) { + case "1": + Speaker.speakHit(); + break; + case "2": + Speaker.speakMiss(); + break; + case "3": + Speaker.speakSecondShot(); + break; + default: + } + return shotSpek; + + } else { + Speaker.speakNotCorrectCoordinates(); + } + } catch (Exception e) { + + } + return "incorrect coordinates"; + } +} diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index 7caa36a3..609c1b54 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -4,19 +4,39 @@ import course_project.sea_battle.model.Player; import course_project.sea_battle.model.Ship; import course_project.sea_battle.view.PaintFieldPlayer; +import course_project.sea_battle.view.Speaker; -import java.io.IOException; +import java.io.BufferedReader; +import java.io.InputStreamReader; public class SeaBattle { public void run() { - Player player = new Player("Rico", new Field(10,10)); - player.addShip(new Ship(true, new int[]{2,2}, 4)); - player.addShip(new Ship(true, new int[]{4,6}, 3)); - player.addShip(new Ship(false, new int[]{0,0}, 3)); - player.addShip(new Ship(false, new int[]{7,7}, 2)); - PaintFieldPlayer paintPlayerField = new PaintFieldPlayer(player); - //Thread paintTread = new Thread(); - paintPlayerField.paintField(); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + Dialog dialog = new Dialog(reader); + Speaker.speakYouName(); + Player player = new Player("TTTTTTT", new Field(10, 10)); + PaintFieldPlayer paintPlayerField = new PaintFieldPlayer(player); + while (!player.readyToGame()){ + player.addShip(dialog.reader()); + paintPlayerField.paintField(); + } + // player.addShip(new Ship(true, 3, 4, 4)); + // player.addShip(new Ship(false, 1, 6, 2)); + // player.addShip(new Ship(true, 6, 8, 1)); + paintPlayerField.paintField(); +// while (true){ +// System.out.println(dialog.shotPlayer(player)); +// paintPlayerField.paintField(); +// } + + } catch (Exception ignored){ + + } + + + + + } } diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index ee271350..acf3b36b 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -1,8 +1,12 @@ package course_project.sea_battle.model; +import java.util.ArrayList; +import java.util.List; + public class Field { - int[][] field; + private int[][] field; + private ShipsGame ships; public Field(int a, int b) { field = new int[a][b]; @@ -11,21 +15,121 @@ public Field(int a, int b) { field[i][j] = 0; } } + ships = new ShipsGame(); } - public boolean addShip(Ship ship){ - int[] a = ship.getPosition(); - for(int i = 0; i < ship.getSize(); i++){ + public boolean addShip(Ship ship) { + if(ship==null) return false; + int a = ship.getStartPositionA(); + int b = ship.getStartPositionB(); + int size = ship.getSize(); + if(!correct(a, b, size, field.length, ship.getOrientation())) return false; + + List list = new ArrayList<>(); + for (int i = 0; i < ship.getSize(); i++) { if (ship.getOrientation()) { - field[a[0]+i][a[1]] = 5; - } else field[a[0]][a[1]+i] = 5; + if (!chekEdge(a + i, b)) return false; + list.add(new Integer[]{a+i, b}); + } else { + if (!chekEdge(a, b + i)) return false; + list.add(new Integer[]{a, b+i}); + } + } + for (Integer[] list1: list) { + field[list1[0]][list1[1]] = 5; } + ships.addShip(ship); return true; } + private boolean correct(int a, int b, int size, int length, boolean orientation) { + if (a < 0 || b < 0 || a > 9 || b > 9 || size < 1 || size >= 5) + return false; + if (orientation && length < a + size) + return false; + if (!orientation && length < b + size) + return false; + return true; + } + public int[][] getField() { return field; } + public boolean readyToGame() { + return ships.ready(); + } + + private boolean chekEdge(int a, int b) { + if (a - 1 >= 0 && b - 1 >= 0 && a + 1 < 10 && b + 1 < 10) { + for (int i = -1; i < 2; i++) { + for (int j = -1; j < 2; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + } else if (a - 1 < 0 && b - 1 >= 0 && b + 1 < 10) { + for (int i = 0; i < 2; i++) { + for (int j = -1; j < 2; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + } else if (a - 1 >= 0 && b - 1 < 0 && a + 1 < 10) { + for (int i = -1; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + } else if (b - 1 >= 0 && a + 1 >= 10 && b + 1 < 10) { + for (int i = -1; i < 1; i++) { + for (int j = -1; j < 2; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + } else if (a - 1 >= 0 && b + 1 >= 10 && a + 1 < 10) { + for (int i = -1; i < 2; i++) { + for (int j = -1; j < 1; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + } else if (a - 1 < 0 && b - 1 < 0) { + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + + } else if (a + 1 >= 10 && b + 1 >= 10) { + for (int i = -1; i < 1; i++) { + for (int j = -1; j < 1; j++) { + if (field[a + i][b + j] != 0) return false; + } + } + } + return true; + } + + public int getSize() { + return field.length; + } + + public String shot(String shot) { + String[] shots = shot.split(" "); + int a = Integer.parseInt(shots[0])-1; + int b = Integer.parseInt(shots[1])-1; + if(field[a][b] == 0 || field[a][b] == 5) { + for (Ships ship : ships.getAllShips()) { + if (ship.shot(a, b)) { + field[a][b] = 7; + return "1"; + } + } + field[a][b] = 3; + return "2"; + } else return "3"; + } + + public boolean checkShipsSize(Ship ship) { + return ships.getShipInSize(ship.getSize()); + } } diff --git a/src/main/java/course_project/sea_battle/model/Player.java b/src/main/java/course_project/sea_battle/model/Player.java index f35a8bff..77a6f605 100644 --- a/src/main/java/course_project/sea_battle/model/Player.java +++ b/src/main/java/course_project/sea_battle/model/Player.java @@ -3,23 +3,44 @@ public class Player { String name; - Field playerFild; + Field playerField; public Player(String name, Field playerFild) { this.name = name; - this.playerFild = playerFild; + this.playerField = playerFild; } public String getName() { return name; } - public Field getPlayerFild() { - return playerFild; + public Field getPlayerField() { + return playerField; } - public boolean addShip(Ship ship){ - return playerFild.addShip(ship); + public String addShip(Ship ship) { + if(ship==null) { + return "Fail Ship null"; + } + if(!playerField.checkShipsSize(ship)){ + return "you can't add a ship of this length anymore"; + } + if (playerField.addShip(ship)) { + return "Correct"; + } + return "Fail Position Not Correct"; + } + + public boolean readyToGame() { + return playerField.readyToGame(); + } + + public int getFieldSize() { + return playerField.getSize(); + } + + public String shot(String shot){ + return playerField.shot(shot); } } diff --git a/src/main/java/course_project/sea_battle/model/Ship.java b/src/main/java/course_project/sea_battle/model/Ship.java index acb10e56..f78a67f6 100644 --- a/src/main/java/course_project/sea_battle/model/Ship.java +++ b/src/main/java/course_project/sea_battle/model/Ship.java @@ -2,19 +2,42 @@ public class Ship implements Ships { - private boolean orientation; - int[] startPosition; - int size; + private final boolean orientation; + private final int startPositionA; + private final int startPositionB; + private final int size; + private int damage; - public Ship(boolean orientation, int[] startPosition, int size) { + public Ship(boolean orientation, int startPositionA, int startPositionB, int size) { this.orientation = orientation; - this.startPosition = startPosition; + this.startPositionA = startPositionA; + this.startPositionB = startPositionB; this.size = size; + this.damage = 0; + } + + public int getStartPositionA() { + return startPositionA; + } + public int getStartPositionB() { + return startPositionB; + } + + public void setDamage(int damage) { + this.damage = damage; } @Override - public int[] getPosition() { - return startPosition; + public boolean isDead() { + return size==damage; + } + + public boolean isOrientation() { + return orientation; + } + + public int getDamage() { + return damage; } @Override @@ -26,4 +49,26 @@ public boolean getOrientation() { public int getSize() { return size; } + + @Override + public boolean shot(int a, int b) { + boolean damageThis = false; + if(getOrientation()){ + for(int i = startPositionA; i ones = new ArrayList<>(); - List twos = new ArrayList<>(); - List trees = new ArrayList<>(); - List fours = new ArrayList<>(); + private List allShips; + private final int shipOne = 4; + private final int shipTwo = 3; + private final int shipTree = 2; + private final int shipFore = 1; public ShipsGame() { + allShips = new ArrayList<>(); } - public List getOnes() { - return ones; + public List getAllShips() { + return allShips; } - public void setOnes(List ones) { - this.ones = ones; + public boolean ready() { + return allShips.size() >= 10; } + public void addShip(Ship ship){ - public List getTwos() { - return twos; + allShips.add(ship); } - public void setTwos(List twos) { - this.twos = twos; - } - - public List getTrees() { - return trees; - } - - public void setTrees(List trees) { - this.trees = trees; - } - - public List getFours() { - return fours; - } - - public void setFours(List fours) { - this.fours = fours; + public boolean getShipInSize(int size){ + int a = 0; + for(Ships ships: allShips){ + if(ships.getSize()==size){ + a++; + } + } + switch (size){ + case 1: return a Date: Wed, 15 Sep 2021 22:14:34 +0300 Subject: [PATCH 74/92] 7lesson and curse --- .../java/course_project/sea_battle/Main.java | 2 +- .../sea_battle/conroller/Dialog.java | 84 +++---- .../sea_battle/conroller/SeaBattle.java | 80 ++++-- .../model/CoordinateTranslator.java | 24 ++ .../sea_battle/model/Field.java | 237 +++++++++++++----- .../model/{Player.java => ModelPlayer.java} | 29 ++- .../course_project/sea_battle/model/Ship.java | 25 +- .../sea_battle/model/Ships.java | 3 + .../sea_battle/model/ShipsGame.java | 41 +-- .../sea_battle/view/PaintFieldInPlay.java | 54 ++++ .../sea_battle/view/PaintFieldPlayer.java | 10 +- .../sea_battle/view/Speaker.java | 42 ++-- src/main/java/homework_7/Cat.java | 36 +++ src/main/java/homework_7/Kitten.java | 25 ++ .../java/homework_7/KittenToCatFunction.java | 6 + src/main/java/homework_7/Main.java | 16 ++ 16 files changed, 517 insertions(+), 197 deletions(-) create mode 100644 src/main/java/course_project/sea_battle/model/CoordinateTranslator.java rename src/main/java/course_project/sea_battle/model/{Player.java => ModelPlayer.java} (50%) create mode 100644 src/main/java/course_project/sea_battle/view/PaintFieldInPlay.java create mode 100644 src/main/java/homework_7/Cat.java create mode 100644 src/main/java/homework_7/Kitten.java create mode 100644 src/main/java/homework_7/KittenToCatFunction.java create mode 100644 src/main/java/homework_7/Main.java diff --git a/src/main/java/course_project/sea_battle/Main.java b/src/main/java/course_project/sea_battle/Main.java index 3695e7e5..ff7cf31f 100644 --- a/src/main/java/course_project/sea_battle/Main.java +++ b/src/main/java/course_project/sea_battle/Main.java @@ -7,6 +7,6 @@ public class Main { public static void main(String[] args) throws IOException { SeaBattle game = new SeaBattle(); - game.run(); + game.start(); } } diff --git a/src/main/java/course_project/sea_battle/conroller/Dialog.java b/src/main/java/course_project/sea_battle/conroller/Dialog.java index f55e3720..b38f1729 100644 --- a/src/main/java/course_project/sea_battle/conroller/Dialog.java +++ b/src/main/java/course_project/sea_battle/conroller/Dialog.java @@ -1,78 +1,76 @@ package course_project.sea_battle.conroller; -import course_project.sea_battle.model.Player; +import course_project.sea_battle.model.CoordinateTranslator; +import course_project.sea_battle.model.ModelPlayer; import course_project.sea_battle.model.Ship; +import course_project.sea_battle.view.PaintFieldPlayer; import course_project.sea_battle.view.Speaker; - -import java.io.BufferedReader; -import java.io.IOException; +import java.util.Scanner; public class Dialog { - private final BufferedReader reader; + private final Scanner reader; - public Dialog(final BufferedReader reader) { + public Dialog(final Scanner reader) { this.reader = reader; } - public Ship reader() { - try { - - String dateShip = reader.readLine(); - if (dateShip.matches("[1-2] [0-9][0]* [0-9][0]* [1-4]")) { + public boolean generateShips(ModelPlayer player) { + PaintFieldPlayer paint = new PaintFieldPlayer(player); + Speaker.voice("inputInstruction"); + paint.paintField(); + while (!player.readyToGame()) { + String dateShip = reader.nextLine(); + if (dateShip.matches("[1-2] (([1-9])|([1][0])) [a-jA-J] [1-4]")) { String[] dateShipSplit = dateShip.split(" "); boolean orient = dateShipSplit[0].equals("2"); int start = Integer.parseInt(dateShipSplit[1]) - 1; - int end = Integer.parseInt(dateShipSplit[2]) - 1; + int end = CoordinateTranslator.coordinate(dateShipSplit[2]); int size = Integer.parseInt(dateShipSplit[3]); if (start >= 0 && start <= 9 && end >= 0 && end <= 9 && size >= 1 && size <= 4) { - return new Ship(orient, start, end, size); - } - + Speaker.voice(player.addShip(new Ship(orient, start, end, size))); + } else System.out.println("Regex bad work)"); + paint.paintField(); } else { - System.out.println("Not correct data:"); + Speaker.voice("notCorrect"); } - } catch (IOException e) { - System.out.println("Not correct data"); } - return null; + return true; } public String namePlayerGet() { try { - String name = reader.readLine(); + String name = reader.nextLine(); return name; } catch (Exception e) { } - return "Bad Name"; + return "Empty"; } - public String shotPlayer(Player player) { - try { - String shot = reader.readLine(); - if (shot.matches("[0-9][0]* [0-9][0]*")) { - String shotSpek = player.shot(shot); - switch (shotSpek) { - case "1": - Speaker.speakHit(); - break; - case "2": - Speaker.speakMiss(); - break; - case "3": - Speaker.speakSecondShot(); - break; - default: - } - return shotSpek; + public String shotPlayer(ModelPlayer player) { + String shot = reader.nextLine(); + if (shot.matches("(([1-9])|([1][0])) [a-jA-J]")) { + return player.shot(shot); + } else return "coordinate"; + } + + public boolean autoGenerate() { + while (true) { + String choice = reader.nextLine(); + if (choice.matches("y|n")) { + if (choice.equals("y")) { + return true; + } + if (choice.equals("n")) { + return false; + } } else { - Speaker.speakNotCorrectCoordinates(); + Speaker.voice("notCorrect"); } - } catch (Exception e) { - } - return "incorrect coordinates"; } + + } diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index 609c1b54..816babde 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -1,41 +1,67 @@ package course_project.sea_battle.conroller; import course_project.sea_battle.model.Field; -import course_project.sea_battle.model.Player; -import course_project.sea_battle.model.Ship; -import course_project.sea_battle.view.PaintFieldPlayer; +import course_project.sea_battle.model.ModelPlayer; +import course_project.sea_battle.view.PaintFieldInPlay; import course_project.sea_battle.view.Speaker; -import java.io.BufferedReader; -import java.io.InputStreamReader; +import java.util.Scanner; -public class SeaBattle { +public class SeaBattle extends Thread { public void run() { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { - Dialog dialog = new Dialog(reader); - Speaker.speakYouName(); - Player player = new Player("TTTTTTT", new Field(10, 10)); - PaintFieldPlayer paintPlayerField = new PaintFieldPlayer(player); - while (!player.readyToGame()){ - player.addShip(dialog.reader()); - paintPlayerField.paintField(); - } - // player.addShip(new Ship(true, 3, 4, 4)); - // player.addShip(new Ship(false, 1, 6, 2)); - // player.addShip(new Ship(true, 6, 8, 1)); - paintPlayerField.paintField(); -// while (true){ -// System.out.println(dialog.shotPlayer(player)); -// paintPlayerField.paintField(); -// } - - } catch (Exception ignored){ - - } + try (Scanner scanner = new Scanner(System.in)) { + Dialog dialog = new Dialog(scanner); + Speaker.voice("dialogName"); + String PlayerName = dialog.namePlayerGet(); + ModelPlayer player = new ModelPlayer("PlayerName", new Field(10, 10)); + ModelPlayer IIPlayer = new ModelPlayer("BOT2", new Field(10, 10)); + Speaker.voice("autoGenerate"); + boolean choiceGenerate = dialog.autoGenerate(); + if (choiceGenerate) { + player.autoGenerateShips(); + } else { + dialog.generateShips(player); + } + IIPlayer.autoGenerateShips(); + PaintFieldInPlay play = new PaintFieldInPlay(player, IIPlayer); + boolean whoCanGo = true; + do { + play.paintFields(); + if (whoCanGo) { + Speaker.voice("queuePlayer"); + String shot1 = dialog.shotPlayer(IIPlayer); + + if ("7".equals(shot1)) { + whoCanGo = true; + } else { + whoCanGo = false; + } + Speaker.voice("shot", shot1); + Thread.sleep(1000); + } else { + String shot2 = player.autoShot(); + Speaker.voice("queueII", shot2); + Thread.sleep(1000); + if ("7".equals(shot2)) { + whoCanGo = false; + } else { + whoCanGo = true; + } + } + + } while (!player.lose() && !IIPlayer.lose()); + + if (player.lose()) { + Speaker.voice("lose1", player.getName()); + } else Speaker.voice("lose1", IIPlayer.getName()); + + } catch (Exception e) { + System.out.println(e + " FAIL"); + } } diff --git a/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java b/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java new file mode 100644 index 00000000..bda7b7e8 --- /dev/null +++ b/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java @@ -0,0 +1,24 @@ +package course_project.sea_battle.model; + +import java.util.HashMap; +import java.util.Map; + +public class CoordinateTranslator { + private static Map coordinateTranslatorMap; + static { + coordinateTranslatorMap = new HashMap<>(); + coordinateTranslatorMap.put("a", 0); + coordinateTranslatorMap.put("b", 1); + coordinateTranslatorMap.put("c", 2); + coordinateTranslatorMap.put("d", 3); + coordinateTranslatorMap.put("e", 4); + coordinateTranslatorMap.put("f", 5); + coordinateTranslatorMap.put("g", 6); + coordinateTranslatorMap.put("h", 7); + coordinateTranslatorMap.put("i", 8); + coordinateTranslatorMap.put("j", 9); + } + public static int coordinate(String key){ + return coordinateTranslatorMap.get(key); + } +} diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index acf3b36b..5b7bf9f7 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -1,54 +1,56 @@ package course_project.sea_battle.model; -import java.util.ArrayList; -import java.util.List; +import java.util.*; public class Field { private int[][] field; private ShipsGame ships; + List autoShotsMap; - public Field(int a, int b) { - field = new int[a][b]; - for (int i = 0; i < a; i++) { - for (int j = 0; j < b; j++) { + public Field(int sizeA, int sizeB) { + field = new int[sizeA][sizeB]; + for (int i = 0; i < sizeA; i++) { + for (int j = 0; j < sizeB; j++) { field[i][j] = 0; } } ships = new ShipsGame(); + autoShotsMap = new ArrayList<>(); } public boolean addShip(Ship ship) { - if(ship==null) return false; - int a = ship.getStartPositionA(); - int b = ship.getStartPositionB(); + int pointA = ship.getStartPositionA(); + int pointB = ship.getStartPositionB(); int size = ship.getSize(); - if(!correct(a, b, size, field.length, ship.getOrientation())) return false; + boolean orient = ship.getOrientation(); + + if(!correct(pointA, pointB, size, orient)) return false; List list = new ArrayList<>(); for (int i = 0; i < ship.getSize(); i++) { if (ship.getOrientation()) { - if (!chekEdge(a + i, b)) return false; - list.add(new Integer[]{a+i, b}); + if (!chekCanPutShip(pointA + i, pointB)) return false; + list.add(new Integer[]{pointA + i, pointB}); } else { - if (!chekEdge(a, b + i)) return false; - list.add(new Integer[]{a, b+i}); + if (!chekCanPutShip(pointA, pointB + i)) return false; + list.add(new Integer[]{pointA, pointB + i}); } } - for (Integer[] list1: list) { - field[list1[0]][list1[1]] = 5; + for (Integer[] list1 : list) { + int posA = list1[0]; + int posB = list1[1]; + field[posA][posB] = 5; } - ships.addShip(ship); - return true; - + return ships.addShip(ship); } - private boolean correct(int a, int b, int size, int length, boolean orientation) { - if (a < 0 || b < 0 || a > 9 || b > 9 || size < 1 || size >= 5) + private boolean correct(int startPointA, int startPointB, int sizeField, boolean orientation) { + if (startPointA < 0 || startPointB < 0 || startPointA > 9 || startPointB > 9 || sizeField < 1 || sizeField >= 5) return false; - if (orientation && length < a + size) + if (orientation && field.length < startPointA + sizeField) return false; - if (!orientation && length < b + size) + if (!orientation && field.length < startPointB + sizeField) return false; return true; } @@ -61,75 +63,188 @@ public boolean readyToGame() { return ships.ready(); } - private boolean chekEdge(int a, int b) { - if (a - 1 >= 0 && b - 1 >= 0 && a + 1 < 10 && b + 1 < 10) { + public int getSize() { + return field.length; + } + + public String shot(String shot) { + String[] shots = shot.split(" "); + int pointA = Integer.parseInt(shots[0]) - 1; + int pointB = CoordinateTranslator.coordinate(shots[1].toLowerCase(Locale.ROOT)); + return shotResult(pointA, pointB); + } + + private void missAroundDeadShip(Ships ship) { + int positionA = ship.getStartPositionA(); + int positionB = ship.getStartPositionB(); + + if (ship.getOrientation()) { + for (; positionA < ship.getStartPositionA() + ship.getSize(); positionA++) { + addMissAroundPoint(positionA, positionB); + } + } + else { + for (; positionB < ship.getStartPositionB() + ship.getSize(); positionB++) { + addMissAroundPoint(positionA, positionB); + } + } + } + + private void addMissAroundPoint(int positionA, int positionB) { + missAroundDeadShipLeft(positionA, positionB); + missAroundDeadShipRight(positionA, positionB); + missAroundDeadShipUp(positionA, positionB); + missAroundDeadShipDown(positionA, positionB); + } + + public boolean shipsDead() { + return ships.shipsDead(); + } + + public void autoGenerateShips() { + while (!ships.ready()) { + boolean orientation = new Random().nextInt(2) == 0; + int x = new Random().nextInt(10); + int y = new Random().nextInt(10); + int size = new Random().nextInt(4) + 1; + if (ships.canAddThisSize(size)) { + addShip(new Ship(orientation, x, y, size)); + } + } + } + + public boolean canAddThisSize(int size) { + return ships.canAddThisSize(size); + } + + public String autoShot() { + int pointA = new Random().nextInt(10); + int pointB = new Random().nextInt(10); + + while (autoShotsMap.contains(String.valueOf(pointA) + String.valueOf(pointB))) { + pointA = new Random().nextInt(10); + pointB = new Random().nextInt(10); + } + autoShotsMap.add(String.valueOf(pointA) + String.valueOf(pointB)); + return shotResult(pointA, pointB); + } + + private void missAroundDeadShipDown(int posA, int posB) { + if (posB - 1 >= 0 && field[posA][posB - 1] == 0) { + setPointInField(posA, posB - 1, 3); + } + if (posB - 1 >= 0 && posA - 1 >= 0 && field[posA - 1][posB - 1] == 0) { + setPointInField(posA - 1, posB - 1, 3); + } + if (posB - 1 >= 0 && posA + 1 < 10 && field[posA + 1][posB - 1] == 0) { + setPointInField(posA + 1, posB - 1, 3); + } + + } + + private void missAroundDeadShipLeft(int posA, int posB) { + if (posA - 1 >= 0 && field[posA - 1][posB] == 0) { + setPointInField(posA - 1, posB, 3); + } + if (posA - 1 >= 0 && posB - 1 >= 0 && field[posA - 1][posB - 1] == 0) { + setPointInField(posA - 1, posB - 1, 3); + } + if (posA - 1 >= 0 && posB + 1 < 10 && field[posA - 1][posB + 1] == 0) { + setPointInField(posA - 1, posB + 1, 3); + } + } + + private void missAroundDeadShipRight(int posA, int posB) { + if (posA + 1 < 10 && field[posA + 1][posB] == 0) { + setPointInField(posA + 1, posB, 3); + } + if (posA + 1 < 10 && posB + 1 < 10 && field[posA + 1][posB + 1] == 0) { + setPointInField(posA + 1, posB + 1, 3); + } + } + + private void missAroundDeadShipUp(int posA, int posB) { + if (posB + 1 < 10 && field[posA][posB + 1] == 0) { + setPointInField(posA, posB + 1, 3); + } + } + + private void setPointInField(int pointA, int pointB, int in) { + if(pointA>=0&&pointB>=0&&pointA<10&&pointB<10) { + field[pointA][pointB] = in; + autoShotsMap.add(String.valueOf(pointA) + String.valueOf(pointB)); + } + } + + private boolean checkPointField(int pointA, int pointB, int checked){ + return field[pointA][pointB] == checked; + } + private String shotResult(int pointA, int pointB) { + if (checkPointField(pointA, pointB, 0) || checkPointField(pointA, pointB, 5)) { + for (Ships ship : ships.getAllShips()) { + if (ship.shot(pointA, pointB)) { + setPointInField(pointA, pointB, 7); + if (ship.isDead()) { + missAroundDeadShip(ship); + return "Hit! And Kill!"; + } + return "Hit!"; + } + } + setPointInField(pointA, pointB, 3); + return "Miss"; + } else { + return "Miss"; + } + + } + + private boolean chekCanPutShip(int pointA, int pointB) { + if (pointA - 1 >= 0 && pointB - 1 >= 0 && pointA + 1 < 10 && pointB + 1 < 10) { for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } - } else if (a - 1 < 0 && b - 1 >= 0 && b + 1 < 10) { + } else if (pointA - 1 < 0 && pointB - 1 >= 0 && pointB + 1 < 10) { for (int i = 0; i < 2; i++) { for (int j = -1; j < 2; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } - } else if (a - 1 >= 0 && b - 1 < 0 && a + 1 < 10) { + } else if (pointA - 1 >= 0 && pointB - 1 < 0 && pointA + 1 < 10) { for (int i = -1; i < 2; i++) { for (int j = 0; j < 2; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } - } else if (b - 1 >= 0 && a + 1 >= 10 && b + 1 < 10) { + } else if (pointB - 1 >= 0 && pointA + 1 >= 10 && pointB + 1 < 10) { for (int i = -1; i < 1; i++) { for (int j = -1; j < 2; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } - } else if (a - 1 >= 0 && b + 1 >= 10 && a + 1 < 10) { + } else if (pointA - 1 >= 0 && pointB + 1 >= 10 && pointA + 1 < 10) { for (int i = -1; i < 2; i++) { for (int j = -1; j < 1; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } - } else if (a - 1 < 0 && b - 1 < 0) { + } else if (pointA - 1 < 0 && pointB - 1 < 0) { for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } - } else if (a + 1 >= 10 && b + 1 >= 10) { + } else if (pointA + 1 >= 10 && pointB + 1 >= 10) { for (int i = -1; i < 1; i++) { for (int j = -1; j < 1; j++) { - if (field[a + i][b + j] != 0) return false; + if (field[pointA + i][pointB + j] != 0) return false; } } } return true; } - public int getSize() { - return field.length; - } - - public String shot(String shot) { - String[] shots = shot.split(" "); - int a = Integer.parseInt(shots[0])-1; - int b = Integer.parseInt(shots[1])-1; - if(field[a][b] == 0 || field[a][b] == 5) { - for (Ships ship : ships.getAllShips()) { - if (ship.shot(a, b)) { - field[a][b] = 7; - return "1"; - } - } - field[a][b] = 3; - return "2"; - } else return "3"; - } - - public boolean checkShipsSize(Ship ship) { - return ships.getShipInSize(ship.getSize()); - } } diff --git a/src/main/java/course_project/sea_battle/model/Player.java b/src/main/java/course_project/sea_battle/model/ModelPlayer.java similarity index 50% rename from src/main/java/course_project/sea_battle/model/Player.java rename to src/main/java/course_project/sea_battle/model/ModelPlayer.java index 77a6f605..78a8322c 100644 --- a/src/main/java/course_project/sea_battle/model/Player.java +++ b/src/main/java/course_project/sea_battle/model/ModelPlayer.java @@ -1,13 +1,13 @@ package course_project.sea_battle.model; -public class Player { +public class ModelPlayer { String name; Field playerField; - public Player(String name, Field playerFild) { + public ModelPlayer(String name, Field playerField) { this.name = name; - this.playerField = playerFild; + this.playerField = playerField; } public String getName() { @@ -19,16 +19,12 @@ public Field getPlayerField() { } public String addShip(Ship ship) { - if(ship==null) { - return "Fail Ship null"; + if(playerField.canAddThisSize(ship.getSize())) { + if (playerField.addShip(ship)) { + return "Correct"; + } } - if(!playerField.checkShipsSize(ship)){ - return "you can't add a ship of this length anymore"; - } - if (playerField.addShip(ship)) { - return "Correct"; - } - return "Fail Position Not Correct"; + return "coordinateFalse"; } public boolean readyToGame() { @@ -43,4 +39,13 @@ public String shot(String shot){ return playerField.shot(shot); } + public boolean lose() { + return playerField.shipsDead(); + } + public void autoGenerateShips() { + playerField.autoGenerateShips(); + } + public String autoShot(){ + return playerField.autoShot(); + } } diff --git a/src/main/java/course_project/sea_battle/model/Ship.java b/src/main/java/course_project/sea_battle/model/Ship.java index f78a67f6..1b1936ce 100644 --- a/src/main/java/course_project/sea_battle/model/Ship.java +++ b/src/main/java/course_project/sea_battle/model/Ship.java @@ -23,23 +23,11 @@ public int getStartPositionB() { return startPositionB; } - public void setDamage(int damage) { - this.damage = damage; - } - @Override public boolean isDead() { return size==damage; } - public boolean isOrientation() { - return orientation; - } - - public int getDamage() { - return damage; - } - @Override public boolean getOrientation() { return orientation; @@ -51,24 +39,29 @@ public int getSize() { } @Override - public boolean shot(int a, int b) { + public boolean shot(int pointA, int pointB) { boolean damageThis = false; if(getOrientation()){ for(int i = startPositionA; i allShips; - private final int shipOne = 4; - private final int shipTwo = 3; - private final int shipTree = 2; - private final int shipFore = 1; + Map inListSizeShip; public ShipsGame() { allShips = new ArrayList<>(); + inListSizeShip = new HashMap<>(); + inListSizeShip.put(1, 4); + inListSizeShip.put(2, 3); + inListSizeShip.put(3, 2); + inListSizeShip.put(4, 1); + } public List getAllShips() { @@ -24,23 +29,25 @@ public List getAllShips() { public boolean ready() { return allShips.size() >= 10; } - public void addShip(Ship ship){ - allShips.add(ship); + public boolean addShip(Ship ship){ + int key = ship.getSize(); + int value = inListSizeShip.get(ship.getSize()) - 1; + inListSizeShip.put(key, value); + return allShips.add(ship); } - public boolean getShipInSize(int size){ - int a = 0; - for(Ships ships: allShips){ - if(ships.getSize()==size){ - a++; + public boolean shipsDead() { + int dead = 0; + for(Ships ship: allShips) { + if(ship.isDead()) { + dead++; } } - switch (size){ - case 1: return a0; } } diff --git a/src/main/java/course_project/sea_battle/view/PaintFieldInPlay.java b/src/main/java/course_project/sea_battle/view/PaintFieldInPlay.java new file mode 100644 index 00000000..40307771 --- /dev/null +++ b/src/main/java/course_project/sea_battle/view/PaintFieldInPlay.java @@ -0,0 +1,54 @@ +package course_project.sea_battle.view; + +import course_project.sea_battle.model.ModelPlayer; + +public class PaintFieldInPlay { + + String EMPTY = " " + "\u001B[34m" + '.' + "\u001B[0m"; + String SHOT = " " + "\u001B[33m" + 'X' + "\u001B[0m"; + String MISS = " " + "\u001B[37m" + 'o' + "\u001B[0m"; + String GATHA = " " + "\u001B[31m" + 'X' + "\u001B[0m"; + + ModelPlayer player; + ModelPlayer II; + + public PaintFieldInPlay(ModelPlayer player, ModelPlayer II) { + this.player = player; + this.II = II; + } + + public void paintFields() { + + System.out.println(player.getName() + " field: " + II.getName() + " field: "); + System.out.println(" A B C D E F G H I J A B C D E F G H I J"); + for (int i = 0; i < 10; i++) { + if (i == 9) System.out.print((i + 1) + ""); + else System.out.print((i + 1) + " "); + for (int j = 0; j < 10; j++) { + int current = player.getPlayerField().getField()[i][j]; + String paint = EMPTY; + if(current==5) paint = SHOT; + if(current==3) paint = MISS; + if(current==7) paint = GATHA; + + System.out.print(paint); + } + + if (i == 9) System.out.print(" " + (i+1) + ""); + else System.out.print(" " + (i+1) + " "); + for (int j = 0; j < 10; j++) { + int current = II.getPlayerField().getField()[i][j]; + String paint = EMPTY; + if(current==5) paint = EMPTY; + if(current==3) paint = MISS; + if(current==7) paint = GATHA; + + System.out.printf(paint); + } + System.out.println(); + } + } + + + +} diff --git a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java index 4bf775ca..6d9de21a 100644 --- a/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java +++ b/src/main/java/course_project/sea_battle/view/PaintFieldPlayer.java @@ -1,21 +1,19 @@ package course_project.sea_battle.view; -import course_project.sea_battle.model.Player; - -import java.util.ArrayList; +import course_project.sea_battle.model.ModelPlayer; public class PaintFieldPlayer { - Player player; + ModelPlayer player; - public PaintFieldPlayer(Player player) { + public PaintFieldPlayer(ModelPlayer player) { this.player = player; } public void paintField() { System.out.println(player.getName() + " field: "); - System.out.println(" A B C D E F G H I G"); + System.out.println(" A B C D E F G H I J"); for (int i = 0; i < 10; i++) { if (i == 9) System.out.print((i + 1) + ""); else System.out.print((i + 1) + " "); diff --git a/src/main/java/course_project/sea_battle/view/Speaker.java b/src/main/java/course_project/sea_battle/view/Speaker.java index f7293e0c..603ffb19 100644 --- a/src/main/java/course_project/sea_battle/view/Speaker.java +++ b/src/main/java/course_project/sea_battle/view/Speaker.java @@ -1,23 +1,37 @@ package course_project.sea_battle.view; +import java.util.HashMap; +import java.util.Map; + public class Speaker { - public static void speakYouName(){ - System.out.println("Write you Name:"); - } - public static void speakNotCorrectCoordinates() { - System.out.println("Not correct coordinates! Try again."); - } + final public static Map speaker; - public static void speakSecondShot() { - System.out.println("repeat shot;-)))"); - } + static { speaker = new HashMap<>(); + speaker.put("shotHit", "Hit!"); + speaker.put("shotMiss", "Miss!"); + speaker.put("shotRe", "Repeat shot;-)))"); + speaker.put("coordinateFalse", "Not correct coordinates! Try again."); + speaker.put("dialogName", "Write you Name:"); + speaker.put("lose1", "LOSE"); + speaker.put("win", "Winer: "); + speaker.put("correct", "Successfully"); + speaker.put("error", "ERROR:"); + speaker.put("shot", "Player shot:"); + speaker.put("autoGenerate", "Do you want to automatically arrange the ships?\nPress Y-yes/N-no"); + speaker.put("coordinate", "Bad coordinate"); + speaker.put("notCorrect", "Not correct data"); + speaker.put("queuePlayer", "You turn, press number, a space and letter:"); + speaker.put("queueII", "My turn,"); + speaker.put("inputInstruction", "The first element is the location of the ship vertically - 1 horizontally-2.\n" + + "Then a space, coordinates of the first number, a space, a letter.\n" + + "Space, the length of the ship. input."); +} - public static void speakMiss() { - System.out.println("Miss!"); + public static void voice(String dialogName) { + System.out.println(speaker.get(dialogName)); } - - public static void speakHit() { - System.out.println("Hit!"); + public static void voice(String dialogName, String add) { + System.out.println(speaker.get(dialogName) + " " + add); } } diff --git a/src/main/java/homework_7/Cat.java b/src/main/java/homework_7/Cat.java new file mode 100644 index 00000000..88cce434 --- /dev/null +++ b/src/main/java/homework_7/Cat.java @@ -0,0 +1,36 @@ +package homework_7; + +public class Cat { + private String name; + private int age; + + public Cat(String name, int age) { + this.name = name; + this.age = age; + + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "Cat{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/src/main/java/homework_7/Kitten.java b/src/main/java/homework_7/Kitten.java new file mode 100644 index 00000000..d58362e9 --- /dev/null +++ b/src/main/java/homework_7/Kitten.java @@ -0,0 +1,25 @@ +package homework_7; + +public class Kitten extends Cat{ + private String nameMother; + + public Kitten(String name, int age, String nameMam) { + super(name, age); + nameMother = nameMam; + } + + public String getNameMother() { + return nameMother; + } + + public void setNameMother(String nameMother) { + this.nameMother = nameMother; + } + + @Override + public String toString() { + return "Kitten{" + + "nameMother='" + nameMother + '\'' + + "} " + super.toString(); + } +} diff --git a/src/main/java/homework_7/KittenToCatFunction.java b/src/main/java/homework_7/KittenToCatFunction.java new file mode 100644 index 00000000..d14706b0 --- /dev/null +++ b/src/main/java/homework_7/KittenToCatFunction.java @@ -0,0 +1,6 @@ +package homework_7; + +@FunctionalInterface +public interface KittenToCatFunction { + Cat grow(Kitten kitten); +} diff --git a/src/main/java/homework_7/Main.java b/src/main/java/homework_7/Main.java new file mode 100644 index 00000000..e66336f1 --- /dev/null +++ b/src/main/java/homework_7/Main.java @@ -0,0 +1,16 @@ +package homework_7; + +public class Main { + public static void main(String[] args) { + Cat cat = new Cat("Myrka", 12); + Kitten tom = new Kitten("Tom", 3, "YYY"); + + KittenToCatFunction kittenToCatFunction = kitten -> new Cat(kitten.getName() + "Cat", kitten.getAge() + 10); + Cat oldTom = kittenToCatFunction.grow(tom); + + System.out.println(cat); + System.out.println(tom); + System.out.println(oldTom); + + } +} From 3cb664343a91d6c497123bd69676d3940c51bbc4 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 15 Sep 2021 22:37:28 +0300 Subject: [PATCH 75/92] readme change --- README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 983e9729..541bcae3 100644 --- a/README.md +++ b/README.md @@ -4,19 +4,20 @@ | Number | Solution | Short description | --- | --- | --- | -|:one:HW1|:small_orange_diamond: [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | -| :two:HW2 |:small_orange_diamond: [TrafficLight](./src/main/java/homework_2/traffic_light)
:wrench:[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| -| :two:HW2 |:small_orange_diamond: [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
:wrench:[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | -| :two:HW2 |:small_orange_diamond: [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
:wrench:[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| :three:HW3 |:small_orange_diamond: [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| -| :four:HW4 |:small_orange_diamond: [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
:wrench:[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | -| :four:HW4 |:small_orange_diamond: [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
:wrench:[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| -| :four:HW4 |:small_orange_diamond: [Singleton](./src/main/java/homework_4/singleton)
:wrench:[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| -| :five:HW5 |:small_orange_diamond: [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
:wrench:[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| -| :five:HW5 |:small_orange_diamond: [PowerOfNumber](./src/main/java/homework_4/power_of_number)
:wrench:[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| -| :six:HW6 |:small_orange_diamond:[MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| -| :six:HW6 |:small_orange_diamond:[MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | - +| HW1| [Console printer](./src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
:wrench:[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| +| HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
:wrench:[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | +| HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
:wrench:[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | +| HW3 | [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| +| HW4 | [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
:wrench:[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | +| HW4 | [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
:wrench:[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| +| HW4 | [Singleton](./src/main/java/homework_4/singleton)
:wrench:[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| +| HW5 | [CustomRegexMatcher](./src/main/java/homework_5/custom_regex_matcher)
:wrench:[CustomRegexMatcherTest](./src/test/java/homework_5/custom_regex_matcher)| This app that accepts 2 numbers from the command line, and raises 1 number to the power of 2 numbers.| +| HW5 | [PowerOfNumber](./src/main/java/homework_4/power_of_number)
:wrench:[PowerOfNumberTest](./src/test/java/homework_4/power_of_number)| This app checks whether the email is entered correctly.| +| HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| +| HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | +| HW7 | [KittenToCatFunction](./src/main/java/homework_7/) | the KittenToCatFunction functional interface, with the abstract grow () method, accepts Kitten and return only Cat.. | +| CourseProject |[SeaBattle](./src/main/java/course_project/sea_battle) | the game follows the standard rules of sea battle | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From a216509feface2a922199cbda92ff4287af98061 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 16 Sep 2021 15:36:23 +0300 Subject: [PATCH 76/92] v 3.0 --- .../sea_battle/conroller/Dialog.java | 13 ++++++---- .../sea_battle/conroller/SeaBattle.java | 24 ++++++++++--------- .../course_project/sea_battle/model/Ship.java | 3 +++ .../sea_battle/model/ShipsGame.java | 1 - .../sea_battle/view/Speaker.java | 3 ++- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/main/java/course_project/sea_battle/conroller/Dialog.java b/src/main/java/course_project/sea_battle/conroller/Dialog.java index b38f1729..40fbc60f 100644 --- a/src/main/java/course_project/sea_battle/conroller/Dialog.java +++ b/src/main/java/course_project/sea_battle/conroller/Dialog.java @@ -49,11 +49,14 @@ public String namePlayerGet() { } public String shotPlayer(ModelPlayer player) { - String shot = reader.nextLine(); - if (shot.matches("(([1-9])|([1][0])) [a-jA-J]")) { - return player.shot(shot); - } else return "coordinate"; - + while (true) { + String shot = reader.nextLine(); + if (shot.matches("(([1-9])|([1][0])) [a-jA-J]")) { + return player.shot(shot); + } else { + Speaker.voice("notCorrect"); + } + } } public boolean autoGenerate() { diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index 816babde..52351091 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -15,13 +15,13 @@ public void run() { Speaker.voice("dialogName"); String PlayerName = dialog.namePlayerGet(); - ModelPlayer player = new ModelPlayer("PlayerName", new Field(10, 10)); + ModelPlayer player = new ModelPlayer(PlayerName, new Field(10, 10)); ModelPlayer IIPlayer = new ModelPlayer("BOT2", new Field(10, 10)); Speaker.voice("autoGenerate"); boolean choiceGenerate = dialog.autoGenerate(); if (choiceGenerate) { - player.autoGenerateShips(); + player.autoGenerateShips(); } else { dialog.generateShips(player); } @@ -29,30 +29,34 @@ public void run() { PaintFieldInPlay play = new PaintFieldInPlay(player, IIPlayer); boolean whoCanGo = true; + play.paintFields(); do { - play.paintFields(); if (whoCanGo) { Speaker.voice("queuePlayer"); String shot1 = dialog.shotPlayer(IIPlayer); + Speaker.voice("shot", shot1); - if ("7".equals(shot1)) { + if ("Hit! And Kill!".equals(shot1)||"Hit!".equals(shot1)) { whoCanGo = true; } else { whoCanGo = false; } - Speaker.voice("shot", shot1); - Thread.sleep(1000); + + } else { + Thread.sleep(1000); String shot2 = player.autoShot(); Speaker.voice("queueII", shot2); - Thread.sleep(1000); - if ("7".equals(shot2)) { + + if ("Hit! And Kill!".equals(shot2)||"Hit!".equals(shot2)) { whoCanGo = false; } else { whoCanGo = true; } + Thread.sleep(1000); } - + Thread.sleep(1000); + play.paintFields(); } while (!player.lose() && !IIPlayer.lose()); if (player.lose()) { @@ -62,7 +66,5 @@ public void run() { } catch (Exception e) { System.out.println(e + " FAIL"); } - - } } diff --git a/src/main/java/course_project/sea_battle/model/Ship.java b/src/main/java/course_project/sea_battle/model/Ship.java index 1b1936ce..abc3312c 100644 --- a/src/main/java/course_project/sea_battle/model/Ship.java +++ b/src/main/java/course_project/sea_battle/model/Ship.java @@ -16,9 +16,12 @@ public Ship(boolean orientation, int startPositionA, int startPositionB, int siz this.damage = 0; } + @Override public int getStartPositionA() { return startPositionA; } + + @Override public int getStartPositionB() { return startPositionB; } diff --git a/src/main/java/course_project/sea_battle/model/ShipsGame.java b/src/main/java/course_project/sea_battle/model/ShipsGame.java index 988e615a..80d43741 100644 --- a/src/main/java/course_project/sea_battle/model/ShipsGame.java +++ b/src/main/java/course_project/sea_battle/model/ShipsGame.java @@ -19,7 +19,6 @@ public ShipsGame() { inListSizeShip.put(2, 3); inListSizeShip.put(3, 2); inListSizeShip.put(4, 1); - } public List getAllShips() { diff --git a/src/main/java/course_project/sea_battle/view/Speaker.java b/src/main/java/course_project/sea_battle/view/Speaker.java index 603ffb19..bfd4b5b3 100644 --- a/src/main/java/course_project/sea_battle/view/Speaker.java +++ b/src/main/java/course_project/sea_battle/view/Speaker.java @@ -7,7 +7,8 @@ public class Speaker { final public static Map speaker; - static { speaker = new HashMap<>(); + static { + speaker = new HashMap<>(); speaker.put("shotHit", "Hit!"); speaker.put("shotMiss", "Miss!"); speaker.put("shotRe", "Repeat shot;-)))"); From e21e470f041a54b49c6d4a8a6a572e27e38475ed Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 16 Sep 2021 21:08:23 +0300 Subject: [PATCH 77/92] add tests and fix some bags --- .../sea_battle/conroller/Dialog.java | 34 ++++---- .../sea_battle/conroller/SeaBattle.java | 2 - .../model/CoordinateTranslator.java | 1 + .../sea_battle/model/Field.java | 82 ++++++------------- .../sea_battle/model/ModelPlayer.java | 21 ++--- .../course_project/sea_battle/model/Ship.java | 11 +++ .../sea_battle/model/ShipsGame.java | 8 ++ .../service/\320\241omputeHelper.java" | 53 ++++++++++++ .../sea_battle/view/Speaker.java | 8 +- .../model/CoordinateTranslatorTest.java | 65 +++++++++++++++ .../sea_battle/model/ModelPlayerTest.java | 21 +++++ .../sea_battle/model/ShipTest.java | 21 +++++ .../sea_battle/model/ShipsGameTest.java | 40 +++++++++ .../service/\320\241omputeHelperTest.java" | 34 ++++++++ 14 files changed, 311 insertions(+), 90 deletions(-) create mode 100644 "src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" create mode 100644 src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java create mode 100644 src/test/java/course_project/sea_battle/model/ModelPlayerTest.java create mode 100644 src/test/java/course_project/sea_battle/model/ShipTest.java create mode 100644 src/test/java/course_project/sea_battle/model/ShipsGameTest.java create mode 100644 "src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" diff --git a/src/main/java/course_project/sea_battle/conroller/Dialog.java b/src/main/java/course_project/sea_battle/conroller/Dialog.java index 40fbc60f..655e0b3c 100644 --- a/src/main/java/course_project/sea_battle/conroller/Dialog.java +++ b/src/main/java/course_project/sea_battle/conroller/Dialog.java @@ -15,27 +15,14 @@ public Dialog(final Scanner reader) { this.reader = reader; } - public boolean generateShips(ModelPlayer player) { + public void generateShips(ModelPlayer player) { PaintFieldPlayer paint = new PaintFieldPlayer(player); Speaker.voice("inputInstruction"); - paint.paintField(); while (!player.readyToGame()) { + paint.paintField(); String dateShip = reader.nextLine(); - if (dateShip.matches("[1-2] (([1-9])|([1][0])) [a-jA-J] [1-4]")) { - String[] dateShipSplit = dateShip.split(" "); - boolean orient = dateShipSplit[0].equals("2"); - int start = Integer.parseInt(dateShipSplit[1]) - 1; - int end = CoordinateTranslator.coordinate(dateShipSplit[2]); - int size = Integer.parseInt(dateShipSplit[3]); - if (start >= 0 && start <= 9 && end >= 0 && end <= 9 && size >= 1 && size <= 4) { - Speaker.voice(player.addShip(new Ship(orient, start, end, size))); - } else System.out.println("Regex bad work)"); - paint.paintField(); - } else { - Speaker.voice("notCorrect"); - } + tryAddShipInField(dateShip, player); } - return true; } public String namePlayerGet() { @@ -75,5 +62,20 @@ public boolean autoGenerate() { } } + private void tryAddShipInField(String dateShip, ModelPlayer player){ + if (dateShip.matches("[1-2] (([1-9])|([1][0])) [a-jA-J] [1-4]")) { + + String[] dateShipSplit = dateShip.split(" "); + boolean orient = dateShipSplit[0].equals("2"); + int start = Integer.parseInt(dateShipSplit[1]) - 1; + int end = CoordinateTranslator.coordinate(dateShipSplit[2]); + int size = Integer.parseInt(dateShipSplit[3]); + + String message = player.addShip(new Ship(orient, start, end, size)); + Speaker.voice(message); + } else { + Speaker.voice("notCorrect"); + } + } } diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index 52351091..db91ee37 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -41,8 +41,6 @@ public void run() { } else { whoCanGo = false; } - - } else { Thread.sleep(1000); String shot2 = player.autoShot(); diff --git a/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java b/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java index bda7b7e8..d2d1144d 100644 --- a/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java +++ b/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java @@ -19,6 +19,7 @@ public class CoordinateTranslator { coordinateTranslatorMap.put("j", 9); } public static int coordinate(String key){ + if(key == null) return 10; return coordinateTranslatorMap.get(key); } } diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index 5b7bf9f7..c7d054dc 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -1,5 +1,7 @@ package course_project.sea_battle.model; +import course_project.sea_battle.service.СomputeHelper; + import java.util.*; public class Field { @@ -19,21 +21,25 @@ public Field(int sizeA, int sizeB) { autoShotsMap = new ArrayList<>(); } - public boolean addShip(Ship ship) { + public String addShip(Ship ship) { + if (!canAddThisSize(ship.getSize())) { + return "sizeShipBad"; + } + int pointA = ship.getStartPositionA(); int pointB = ship.getStartPositionB(); int size = ship.getSize(); boolean orient = ship.getOrientation(); - if(!correct(pointA, pointB, size, orient)) return false; + if (!correct(pointA, pointB, size, orient)) return "coordinateFalse"; List list = new ArrayList<>(); for (int i = 0; i < ship.getSize(); i++) { if (ship.getOrientation()) { - if (!chekCanPutShip(pointA + i, pointB)) return false; + if (!СomputeHelper.chekCanPutShip(pointA + i, pointB, field)) return "fieldNotEmpty"; list.add(new Integer[]{pointA + i, pointB}); } else { - if (!chekCanPutShip(pointA, pointB + i)) return false; + if (!СomputeHelper.chekCanPutShip(pointA, pointB + i, field)) return "fieldNotEmpty"; list.add(new Integer[]{pointA, pointB + i}); } } @@ -42,7 +48,7 @@ public boolean addShip(Ship ship) { int posB = list1[1]; field[posA][posB] = 5; } - return ships.addShip(ship); + return ships.addShip(ship) ? "correct" : "coordinateFalse"; } private boolean correct(int startPointA, int startPointB, int sizeField, boolean orientation) { @@ -82,8 +88,7 @@ private void missAroundDeadShip(Ships ship) { for (; positionA < ship.getStartPositionA() + ship.getSize(); positionA++) { addMissAroundPoint(positionA, positionB); } - } - else { + } else { for (; positionB < ship.getStartPositionB() + ship.getSize(); positionB++) { addMissAroundPoint(positionA, positionB); } @@ -139,7 +144,6 @@ private void missAroundDeadShipDown(int posA, int posB) { if (posB - 1 >= 0 && posA + 1 < 10 && field[posA + 1][posB - 1] == 0) { setPointInField(posA + 1, posB - 1, 3); } - } private void missAroundDeadShipLeft(int posA, int posB) { @@ -170,15 +174,16 @@ private void missAroundDeadShipUp(int posA, int posB) { } private void setPointInField(int pointA, int pointB, int in) { - if(pointA>=0&&pointB>=0&&pointA<10&&pointB<10) { + if (pointA >= 0 && pointB >= 0 && pointA < 10 && pointB < 10) { field[pointA][pointB] = in; autoShotsMap.add(String.valueOf(pointA) + String.valueOf(pointB)); } } - private boolean checkPointField(int pointA, int pointB, int checked){ + private boolean checkPointField(int pointA, int pointB, int checked) { return field[pointA][pointB] == checked; } + private String shotResult(int pointA, int pointB) { if (checkPointField(pointA, pointB, 0) || checkPointField(pointA, pointB, 5)) { for (Ships ship : ships.getAllShips()) { @@ -194,57 +199,16 @@ private String shotResult(int pointA, int pointB) { setPointInField(pointA, pointB, 3); return "Miss"; } else { - return "Miss"; + return "repeatShot"; } - } - private boolean chekCanPutShip(int pointA, int pointB) { - if (pointA - 1 >= 0 && pointB - 1 >= 0 && pointA + 1 < 10 && pointB + 1 < 10) { - for (int i = -1; i < 2; i++) { - for (int j = -1; j < 2; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - } else if (pointA - 1 < 0 && pointB - 1 >= 0 && pointB + 1 < 10) { - for (int i = 0; i < 2; i++) { - for (int j = -1; j < 2; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - } else if (pointA - 1 >= 0 && pointB - 1 < 0 && pointA + 1 < 10) { - for (int i = -1; i < 2; i++) { - for (int j = 0; j < 2; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - } else if (pointB - 1 >= 0 && pointA + 1 >= 10 && pointB + 1 < 10) { - for (int i = -1; i < 1; i++) { - for (int j = -1; j < 2; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - } else if (pointA - 1 >= 0 && pointB + 1 >= 10 && pointA + 1 < 10) { - for (int i = -1; i < 2; i++) { - for (int j = -1; j < 1; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - } else if (pointA - 1 < 0 && pointB - 1 < 0) { - for (int i = 0; i < 2; i++) { - for (int j = 0; j < 2; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - - } else if (pointA + 1 >= 10 && pointB + 1 >= 10) { - for (int i = -1; i < 1; i++) { - for (int j = -1; j < 1; j++) { - if (field[pointA + i][pointB + j] != 0) return false; - } - } - } - return true; + @Override + public String toString() { + return "Field{" + + "field=" + Arrays.toString(field) + + ", ships=" + ships + + ", autoShotsMap=" + autoShotsMap + + '}'; } - } diff --git a/src/main/java/course_project/sea_battle/model/ModelPlayer.java b/src/main/java/course_project/sea_battle/model/ModelPlayer.java index 78a8322c..7f8d4ada 100644 --- a/src/main/java/course_project/sea_battle/model/ModelPlayer.java +++ b/src/main/java/course_project/sea_battle/model/ModelPlayer.java @@ -19,22 +19,13 @@ public Field getPlayerField() { } public String addShip(Ship ship) { - if(playerField.canAddThisSize(ship.getSize())) { - if (playerField.addShip(ship)) { - return "Correct"; - } - } - return "coordinateFalse"; + return playerField.addShip(ship); } public boolean readyToGame() { return playerField.readyToGame(); } - public int getFieldSize() { - return playerField.getSize(); - } - public String shot(String shot){ return playerField.shot(shot); } @@ -42,10 +33,20 @@ public String shot(String shot){ public boolean lose() { return playerField.shipsDead(); } + public void autoGenerateShips() { playerField.autoGenerateShips(); } + public String autoShot(){ return playerField.autoShot(); } + + @Override + public String toString() { + return "ModelPlayer{" + + "name='" + name + '\'' + + ", playerField=" + playerField + + '}'; + } } diff --git a/src/main/java/course_project/sea_battle/model/Ship.java b/src/main/java/course_project/sea_battle/model/Ship.java index abc3312c..bdce9472 100644 --- a/src/main/java/course_project/sea_battle/model/Ship.java +++ b/src/main/java/course_project/sea_battle/model/Ship.java @@ -67,4 +67,15 @@ public boolean shot(int pointA, int pointB) { public void takeDamage() { this.damage++; } + + @Override + public String toString() { + return "Ship{" + + "orientation=" + orientation + + ", startPositionA=" + startPositionA + + ", startPositionB=" + startPositionB + + ", size=" + size + + ", damage=" + damage + + '}'; + } } diff --git a/src/main/java/course_project/sea_battle/model/ShipsGame.java b/src/main/java/course_project/sea_battle/model/ShipsGame.java index 80d43741..9bd18ede 100644 --- a/src/main/java/course_project/sea_battle/model/ShipsGame.java +++ b/src/main/java/course_project/sea_battle/model/ShipsGame.java @@ -49,4 +49,12 @@ public boolean shipsDead() { public boolean canAddThisSize(int size) { return inListSizeShip.get(size)>0; } + + @Override + public String toString() { + return "ShipsGame{" + + "allShips=" + allShips + + ", inListSizeShip=" + inListSizeShip + + '}'; + } } diff --git "a/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" "b/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" new file mode 100644 index 00000000..0ab9aee6 --- /dev/null +++ "b/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" @@ -0,0 +1,53 @@ +package course_project.sea_battle.service; + +import course_project.sea_battle.model.Field; + +public class СomputeHelper { + + public static boolean chekCanPutShip(int pointA, int pointB, int[][] field) { + if (pointA - 1 >= 0 && pointB - 1 >= 0 && pointA + 1 < 10 && pointB + 1 < 10) { + for (int i = -1; i < 2; i++) { + for (int j = -1; j < 2; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } else if (pointA - 1 < 0 && pointB - 1 >= 0 && pointB + 1 < 10) { + for (int i = 0; i < 2; i++) { + for (int j = -1; j < 2; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } else if (pointA - 1 >= 0 && pointB - 1 < 0 && pointA + 1 < 10) { + for (int i = -1; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } else if (pointB - 1 >= 0 && pointA + 1 >= 10 && pointB + 1 < 10) { + for (int i = -1; i < 1; i++) { + for (int j = -1; j < 2; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } else if (pointA - 1 >= 0 && pointB + 1 >= 10 && pointA + 1 < 10) { + for (int i = -1; i < 2; i++) { + for (int j = -1; j < 1; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } else if (pointA - 1 < 0 && pointB - 1 < 0) { + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 2; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } else if (pointA + 1 >= 10 && pointB + 1 >= 10) { + for (int i = -1; i < 1; i++) { + for (int j = -1; j < 1; j++) { + if (field[pointA + i][pointB + j] != 0) return false; + } + } + } + return true; + } +} diff --git a/src/main/java/course_project/sea_battle/view/Speaker.java b/src/main/java/course_project/sea_battle/view/Speaker.java index bfd4b5b3..2588f0ad 100644 --- a/src/main/java/course_project/sea_battle/view/Speaker.java +++ b/src/main/java/course_project/sea_battle/view/Speaker.java @@ -11,11 +11,10 @@ public class Speaker { speaker = new HashMap<>(); speaker.put("shotHit", "Hit!"); speaker.put("shotMiss", "Miss!"); - speaker.put("shotRe", "Repeat shot;-)))"); speaker.put("coordinateFalse", "Not correct coordinates! Try again."); speaker.put("dialogName", "Write you Name:"); speaker.put("lose1", "LOSE"); - speaker.put("win", "Winer: "); + speaker.put("win", "Winner: "); speaker.put("correct", "Successfully"); speaker.put("error", "ERROR:"); speaker.put("shot", "Player shot:"); @@ -23,7 +22,10 @@ public class Speaker { speaker.put("coordinate", "Bad coordinate"); speaker.put("notCorrect", "Not correct data"); speaker.put("queuePlayer", "You turn, press number, a space and letter:"); - speaker.put("queueII", "My turn,"); + speaker.put("queueII", "Turn Bot!"); + speaker.put("repeatShot", "Repeat shot;-)))"); + speaker.put("fieldNotEmpty", "This coordinate is occupied by another ship"); + speaker.put("sizeShipBad", "you can't create a ship of this size"); speaker.put("inputInstruction", "The first element is the location of the ship vertically - 1 horizontally-2.\n" + "Then a space, coordinates of the first number, a space, a letter.\n" + "Space, the length of the ship. input."); diff --git a/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java b/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java new file mode 100644 index 00000000..4bb80cb0 --- /dev/null +++ b/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java @@ -0,0 +1,65 @@ +package course_project.sea_battle.model; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class CoordinateTranslatorTest extends UnitBase { + + @Test + void coordinateTestNull() { + assertEquals(10,CoordinateTranslator.coordinate(null)); + } + @Test + void coordinateTestA() { + assertEquals(0,CoordinateTranslator.coordinate("A")); + assertEquals(0,CoordinateTranslator.coordinate("a")); + } + @Test + void coordinateTestB() { + + assertEquals(1,CoordinateTranslator.coordinate("b")); + } + @Test + void coordinateTestC() { + assertEquals(2,CoordinateTranslator.coordinate("C")); + assertEquals(2,CoordinateTranslator.coordinate("c")); + } + @Test + void coordinateTestD() { + assertEquals(3,CoordinateTranslator.coordinate("D")); + assertEquals(3,CoordinateTranslator.coordinate("d")); + } + @Test + void coordinateTestE() { + assertEquals(4,CoordinateTranslator.coordinate("E")); + assertEquals(4,CoordinateTranslator.coordinate("e")); + } + @Test + void coordinateTestF() { + assertEquals(5,CoordinateTranslator.coordinate("F")); + assertEquals(5,CoordinateTranslator.coordinate("f")); + } + @Test + void coordinateTestG() { + assertEquals(6,CoordinateTranslator.coordinate("G")); + assertEquals(6,CoordinateTranslator.coordinate("g")); + } + @Test + void coordinateTestH() { + assertEquals(7,CoordinateTranslator.coordinate("H")); + assertEquals(7,CoordinateTranslator.coordinate("h")); + } + @Test + void coordinateTestI() { + assertEquals(8,CoordinateTranslator.coordinate("I")); + assertEquals(8,CoordinateTranslator.coordinate("i")); + } + @Test + void coordinateTestJ() { + assertEquals(9,CoordinateTranslator.coordinate("J")); + assertEquals(9,CoordinateTranslator.coordinate("j")); + } + +} \ No newline at end of file diff --git a/src/test/java/course_project/sea_battle/model/ModelPlayerTest.java b/src/test/java/course_project/sea_battle/model/ModelPlayerTest.java new file mode 100644 index 00000000..4d446875 --- /dev/null +++ b/src/test/java/course_project/sea_battle/model/ModelPlayerTest.java @@ -0,0 +1,21 @@ +package course_project.sea_battle.model; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ModelPlayerTest extends UnitBase { + + public static ModelPlayer dima = new ModelPlayer("Dima", new Field(10,10)); + + @Test + void getName() { + assertEquals("Dima", dima.getName()); + } + + @Test + void getPlayerField() { + assertEquals(10, dima.getPlayerField().getSize()); + } +} \ No newline at end of file diff --git a/src/test/java/course_project/sea_battle/model/ShipTest.java b/src/test/java/course_project/sea_battle/model/ShipTest.java new file mode 100644 index 00000000..9a7fee2e --- /dev/null +++ b/src/test/java/course_project/sea_battle/model/ShipTest.java @@ -0,0 +1,21 @@ +package course_project.sea_battle.model; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ShipTest extends UnitBase { + + @Test + void shot() { + Ship ship = new Ship(true, 2, 2, 3); + assertTrue(ship.shot(2, 2)); + assertTrue(ship.shot(3, 2)); + assertTrue(ship.shot(4, 2)); + assertFalse(ship.shot(4, 3)); + assertFalse(ship.shot(2, 3)); + assertFalse(ship.shot(1, 1)); + assertFalse(ship.shot(11, 11)); + } +} \ No newline at end of file diff --git a/src/test/java/course_project/sea_battle/model/ShipsGameTest.java b/src/test/java/course_project/sea_battle/model/ShipsGameTest.java new file mode 100644 index 00000000..11f35dc5 --- /dev/null +++ b/src/test/java/course_project/sea_battle/model/ShipsGameTest.java @@ -0,0 +1,40 @@ +package course_project.sea_battle.model; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class ShipsGameTest extends UnitBase { + ShipsGame shipsGame = new ShipsGame(); + @Test + void getAllShips() { + List list = shipsGame.getAllShips(); + assertEquals(0, list.size()); + } + + @Test + void ready() { + assertFalse(shipsGame.ready()); + } + + @Test + void addShip() { + shipsGame.addShip(new Ship(true, 1 , 1 ,1)); + assertEquals(1, shipsGame.getAllShips().size()); + } + + @Test + void shipsDead() { + assertFalse(shipsGame.shipsDead()); + } + + @Test + void canAddThisSize() { + assertTrue(shipsGame.canAddThisSize(4)); + shipsGame.addShip(new Ship(true, 3 , 3 ,4)); + assertFalse(shipsGame.canAddThisSize(4)); + } +} \ No newline at end of file diff --git "a/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" "b/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" new file mode 100644 index 00000000..780e31bd --- /dev/null +++ "b/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" @@ -0,0 +1,34 @@ +package course_project.sea_battle.service; + +import base.UnitBase; +import course_project.sea_battle.model.Field; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class СomputeHelperTest extends UnitBase { + + @Test + void chekCanPutShip() { + int[][] field = new int[10][10]; + assertTrue(СomputeHelper.chekCanPutShip(0,0, field)); + assertTrue(СomputeHelper.chekCanPutShip(1,0, field)); + assertTrue(СomputeHelper.chekCanPutShip(0,1, field)); + assertTrue(СomputeHelper.chekCanPutShip(3,0, field)); + field[1][1] = 5; + assertFalse(СomputeHelper.chekCanPutShip(1,0, field)); + assertFalse(СomputeHelper.chekCanPutShip(1,1, field)); + assertFalse(СomputeHelper.chekCanPutShip(0,1, field)); + assertFalse(СomputeHelper.chekCanPutShip(1,2, field)); + + assertTrue(СomputeHelper.chekCanPutShip(5,5, field)); + assertTrue(СomputeHelper.chekCanPutShip(4,6, field)); + assertTrue(СomputeHelper.chekCanPutShip(8,7, field)); + assertTrue(СomputeHelper.chekCanPutShip(7,4, field)); + field[5][6] = 5; + assertFalse(СomputeHelper.chekCanPutShip(5,5, field)); + assertFalse(СomputeHelper.chekCanPutShip(6,6, field)); + assertFalse(СomputeHelper.chekCanPutShip(6,7, field)); + assertFalse(СomputeHelper.chekCanPutShip(6,5, field)); + } +} \ No newline at end of file From 904825a892a047a0c972e543d40e02f78de73ae4 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 16 Sep 2021 21:16:35 +0300 Subject: [PATCH 78/92] add README.md test SeaBattle --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 541bcae3..91712e6c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ | HW6 | [MapProblemsCollisionGenerator](./src/main/java/homework_6/map_problems_generator) | This app creates collisions in HashMap.| | HW6 | [MapProblemsMutableGenerator](./src/main/java/homework_6/map_problems_generator) | A mutable class is declared, this object in HashMap we will not be able to get this object by the key. | | HW7 | [KittenToCatFunction](./src/main/java/homework_7/) | the KittenToCatFunction functional interface, with the abstract grow () method, accepts Kitten and return only Cat.. | -| CourseProject |[SeaBattle](./src/main/java/course_project/sea_battle) | the game follows the standard rules of sea battle | +| CourseProject |[SeaBattle](./src/main/java/course_project/sea_battle)
:wrench:[SeaBattleTest](./src/test/java/course_project/sea_battle)| the game follows the standard rules of sea battle | [Link to CodingBat](https://codingbat.com/done?user=bomba_25@mail.ru&tag=8601275236) From a27403b073ca5e376a7966d0f58738494953f7d5 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sat, 18 Sep 2021 17:25:44 +0300 Subject: [PATCH 79/92] add test Speaker --- .../service/\320\241omputeHelper.java" | 1 + .../sea_battle/view/Speaker.java | 3 +- .../service/\320\241omputeHelperTest.java" | 1 - .../sea_battle/view/SpeakerTest.java | 99 +++++++++++++++++++ 4 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 src/test/java/course_project/sea_battle/view/SpeakerTest.java diff --git "a/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" "b/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" index 0ab9aee6..38a56771 100644 --- "a/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" +++ "b/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" @@ -50,4 +50,5 @@ public static boolean chekCanPutShip(int pointA, int pointB, int[][] field) { } return true; } + } diff --git a/src/main/java/course_project/sea_battle/view/Speaker.java b/src/main/java/course_project/sea_battle/view/Speaker.java index 2588f0ad..667fb923 100644 --- a/src/main/java/course_project/sea_battle/view/Speaker.java +++ b/src/main/java/course_project/sea_battle/view/Speaker.java @@ -5,7 +5,7 @@ public class Speaker { - final public static Map speaker; + final private static Map speaker; static { speaker = new HashMap<>(); @@ -19,7 +19,6 @@ public class Speaker { speaker.put("error", "ERROR:"); speaker.put("shot", "Player shot:"); speaker.put("autoGenerate", "Do you want to automatically arrange the ships?\nPress Y-yes/N-no"); - speaker.put("coordinate", "Bad coordinate"); speaker.put("notCorrect", "Not correct data"); speaker.put("queuePlayer", "You turn, press number, a space and letter:"); speaker.put("queueII", "Turn Bot!"); diff --git "a/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" "b/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" index 780e31bd..f5ebeef2 100644 --- "a/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" +++ "b/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" @@ -1,7 +1,6 @@ package course_project.sea_battle.service; import base.UnitBase; -import course_project.sea_battle.model.Field; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/course_project/sea_battle/view/SpeakerTest.java b/src/test/java/course_project/sea_battle/view/SpeakerTest.java new file mode 100644 index 00000000..7048cdad --- /dev/null +++ b/src/test/java/course_project/sea_battle/view/SpeakerTest.java @@ -0,0 +1,99 @@ +package course_project.sea_battle.view; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class SpeakerTest extends UnitBase { + + @Test + void printTestHit() { + Speaker.voice("shotHit"); + assertEquals("Hit!", getOutputLines()[0]); + } + @Test + void printTestMiss() { + Speaker.voice("shotMiss"); + assertEquals("Miss!", getOutputLines()[0]); + } + @Test + void printTestNotCorrectCoordinate() { + Speaker.voice("coordinateFalse"); + assertEquals("Not correct coordinates! Try again.", getOutputLines()[0]); + } + @Test + void printTestWriteYouName() { + Speaker.voice("dialogName"); + assertEquals("Write you Name:", getOutputLines()[0]); + } + @Test + void printTestLose() { + Speaker.voice("lose1"); + assertEquals("LOSE", getOutputLines()[0]); + } + @Test + void printTestWin() { + Speaker.voice("win"); + assertEquals("Winner:", getOutputLines()[0]); + } + @Test + void printTestSuccessfully() { + Speaker.voice("correct"); + assertEquals("Successfully", getOutputLines()[0]); + } + @Test + void printTestError() { + Speaker.voice("error"); + assertEquals("ERROR:", getOutputLines()[0]); + } + @Test + void printTestShot() { + Speaker.voice("shot"); + assertEquals("Player shot:", getOutputLines()[0]); + } + @Test + void printTestQuestionPressYOrN() { + Speaker.voice("autoGenerate"); + assertEquals("Do you want to automatically arrange the ships?", getOutputLines()[0]); + assertEquals("Press Y-yes/N-no", getOutputLines()[1]); + } + @Test + void printTestNotCorrectData() { + Speaker.voice("notCorrect"); + assertEquals("Not correct data", getOutputLines()[0]); + } + @Test + void printTestYouTurn() { + Speaker.voice("queuePlayer"); + assertEquals("You turn, press number, a space and letter:", getOutputLines()[0]); + } + @Test + void printTestTurnBot() { + Speaker.voice("queueII"); + assertEquals("Turn Bot!", getOutputLines()[0]); + } + @Test + void printTestReapeatShot() { + Speaker.voice("repeatShot"); + assertEquals("Repeat shot;-)))", getOutputLines()[0]); + } + @Test + void printTestThisCoordinateIsOccupied() { + Speaker.voice("fieldNotEmpty"); + assertEquals("This coordinate is occupied by another ship", getOutputLines()[0]); + } + @Test + void printTestYouNotCanCreateShip() { + Speaker.voice("sizeShipBad"); + assertEquals("you can't create a ship of this size", getOutputLines()[0]); + } + @Test + void printTestFirstElementLocation() { + Speaker.voice("inputInstruction"); + assertEquals("The first element is the location of the ship vertically - 1 horizontally-2.", getOutputLines()[0]); + assertEquals("Then a space, coordinates of the first number, a space, a letter.", getOutputLines()[1]); + assertEquals("Space, the length of the ship. input.", getOutputLines()[2]); + } + +} \ No newline at end of file From 907452ca602967318f00e00555fdaa3a39bc83d1 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 19 Sep 2021 18:02:13 +0300 Subject: [PATCH 80/92] Add Animation --- .../sea_battle/conroller/Dialog.java | 4 +++- .../sea_battle/conroller/SeaBattle.java | 5 ++++ .../sea_battle/model/Field.java | 2 +- .../sea_battle/model/ShipsGame.java | 23 +++++++++++-------- .../sea_battle/view/Animate.java | 20 ++++++++++++++++ .../sea_battle/view/Speaker.java | 2 +- .../model/CoordinateTranslatorTest.java | 9 -------- .../sea_battle/view/SpeakerTest.java | 2 +- 8 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 src/main/java/course_project/sea_battle/view/Animate.java diff --git a/src/main/java/course_project/sea_battle/conroller/Dialog.java b/src/main/java/course_project/sea_battle/conroller/Dialog.java index 655e0b3c..3f53dd52 100644 --- a/src/main/java/course_project/sea_battle/conroller/Dialog.java +++ b/src/main/java/course_project/sea_battle/conroller/Dialog.java @@ -5,6 +5,8 @@ import course_project.sea_battle.model.Ship; import course_project.sea_battle.view.PaintFieldPlayer; import course_project.sea_battle.view.Speaker; + +import java.util.Locale; import java.util.Scanner; public class Dialog { @@ -68,7 +70,7 @@ private void tryAddShipInField(String dateShip, ModelPlayer player){ String[] dateShipSplit = dateShip.split(" "); boolean orient = dateShipSplit[0].equals("2"); int start = Integer.parseInt(dateShipSplit[1]) - 1; - int end = CoordinateTranslator.coordinate(dateShipSplit[2]); + int end = CoordinateTranslator.coordinate(dateShipSplit[2].toLowerCase(Locale.ROOT)); int size = Integer.parseInt(dateShipSplit[3]); String message = player.addShip(new Ship(orient, start, end, size)); diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index db91ee37..a2987116 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -2,6 +2,7 @@ import course_project.sea_battle.model.Field; import course_project.sea_battle.model.ModelPlayer; +import course_project.sea_battle.view.Animate; import course_project.sea_battle.view.PaintFieldInPlay; import course_project.sea_battle.view.Speaker; @@ -12,7 +13,11 @@ public class SeaBattle extends Thread { public void run() { try (Scanner scanner = new Scanner(System.in)) { Dialog dialog = new Dialog(scanner); + Thread anim = new Animate(); + anim.start(); + anim.join(); Speaker.voice("dialogName"); + String PlayerName = dialog.namePlayerGet(); ModelPlayer player = new ModelPlayer(PlayerName, new Field(10, 10)); diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index c7d054dc..d6c89a43 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -74,7 +74,7 @@ public int getSize() { } public String shot(String shot) { - String[] shots = shot.split(" "); + String[] shots = shot.toLowerCase(Locale.ROOT).split(" "); int pointA = Integer.parseInt(shots[0]) - 1; int pointB = CoordinateTranslator.coordinate(shots[1].toLowerCase(Locale.ROOT)); return shotResult(pointA, pointB); diff --git a/src/main/java/course_project/sea_battle/model/ShipsGame.java b/src/main/java/course_project/sea_battle/model/ShipsGame.java index 9bd18ede..8193a927 100644 --- a/src/main/java/course_project/sea_battle/model/ShipsGame.java +++ b/src/main/java/course_project/sea_battle/model/ShipsGame.java @@ -29,25 +29,28 @@ public boolean ready() { return allShips.size() >= 10; } - public boolean addShip(Ship ship){ - int key = ship.getSize(); - int value = inListSizeShip.get(ship.getSize()) - 1; - inListSizeShip.put(key, value); - return allShips.add(ship); + public boolean addShip(Ship ship) { + int key = ship.getSize(); + int value = inListSizeShip.get(ship.getSize()) - 1; + inListSizeShip.put(key, value); + return allShips.add(ship); } public boolean shipsDead() { int dead = 0; - for(Ships ship: allShips) { - if(ship.isDead()) { - dead++; + if (allShips.size() == 10) { + for (Ships ship : allShips) { + if (ship.isDead()) { + dead++; + } } + return dead == allShips.size(); } - return dead==allShips.size(); + return false; } public boolean canAddThisSize(int size) { - return inListSizeShip.get(size)>0; + return inListSizeShip.get(size) > 0; } @Override diff --git a/src/main/java/course_project/sea_battle/view/Animate.java b/src/main/java/course_project/sea_battle/view/Animate.java new file mode 100644 index 00000000..0a40cfdb --- /dev/null +++ b/src/main/java/course_project/sea_battle/view/Animate.java @@ -0,0 +1,20 @@ +package course_project.sea_battle.view; + +public class Animate extends Thread { + @Override + public void run() { + System.out.println("*****************************"); + String str = "\u001B[31m" + " WELCOME TO BATTLESHIPS GAME" + "\u001B[0m"; + + try { + Thread.sleep(2000); + for (Character character : str.toCharArray()) { + System.out.print(character); + Thread.sleep(100); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("\n*****************************"); + } +} diff --git a/src/main/java/course_project/sea_battle/view/Speaker.java b/src/main/java/course_project/sea_battle/view/Speaker.java index 667fb923..70466ba9 100644 --- a/src/main/java/course_project/sea_battle/view/Speaker.java +++ b/src/main/java/course_project/sea_battle/view/Speaker.java @@ -12,7 +12,7 @@ public class Speaker { speaker.put("shotHit", "Hit!"); speaker.put("shotMiss", "Miss!"); speaker.put("coordinateFalse", "Not correct coordinates! Try again."); - speaker.put("dialogName", "Write you Name:"); + speaker.put("dialogName", "Write you Name, cap:"); speaker.put("lose1", "LOSE"); speaker.put("win", "Winner: "); speaker.put("correct", "Successfully"); diff --git a/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java b/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java index 4bb80cb0..b85c8d56 100644 --- a/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java +++ b/src/test/java/course_project/sea_battle/model/CoordinateTranslatorTest.java @@ -13,7 +13,6 @@ void coordinateTestNull() { } @Test void coordinateTestA() { - assertEquals(0,CoordinateTranslator.coordinate("A")); assertEquals(0,CoordinateTranslator.coordinate("a")); } @Test @@ -23,42 +22,34 @@ void coordinateTestB() { } @Test void coordinateTestC() { - assertEquals(2,CoordinateTranslator.coordinate("C")); assertEquals(2,CoordinateTranslator.coordinate("c")); } @Test void coordinateTestD() { - assertEquals(3,CoordinateTranslator.coordinate("D")); assertEquals(3,CoordinateTranslator.coordinate("d")); } @Test void coordinateTestE() { - assertEquals(4,CoordinateTranslator.coordinate("E")); assertEquals(4,CoordinateTranslator.coordinate("e")); } @Test void coordinateTestF() { - assertEquals(5,CoordinateTranslator.coordinate("F")); assertEquals(5,CoordinateTranslator.coordinate("f")); } @Test void coordinateTestG() { - assertEquals(6,CoordinateTranslator.coordinate("G")); assertEquals(6,CoordinateTranslator.coordinate("g")); } @Test void coordinateTestH() { - assertEquals(7,CoordinateTranslator.coordinate("H")); assertEquals(7,CoordinateTranslator.coordinate("h")); } @Test void coordinateTestI() { - assertEquals(8,CoordinateTranslator.coordinate("I")); assertEquals(8,CoordinateTranslator.coordinate("i")); } @Test void coordinateTestJ() { - assertEquals(9,CoordinateTranslator.coordinate("J")); assertEquals(9,CoordinateTranslator.coordinate("j")); } diff --git a/src/test/java/course_project/sea_battle/view/SpeakerTest.java b/src/test/java/course_project/sea_battle/view/SpeakerTest.java index 7048cdad..14ac0329 100644 --- a/src/test/java/course_project/sea_battle/view/SpeakerTest.java +++ b/src/test/java/course_project/sea_battle/view/SpeakerTest.java @@ -25,7 +25,7 @@ void printTestNotCorrectCoordinate() { @Test void printTestWriteYouName() { Speaker.voice("dialogName"); - assertEquals("Write you Name:", getOutputLines()[0]); + assertEquals("Write you Name, cap:", getOutputLines()[0]); } @Test void printTestLose() { From 3892138c5463bc80b5e25acd389a1b7dcdd5df03 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 19 Sep 2021 18:04:52 +0300 Subject: [PATCH 81/92] Add package animated --- .../{view/Animate.java => animated/AnimateStartGame.java} | 4 ++-- .../java/course_project/sea_battle/conroller/SeaBattle.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/course_project/sea_battle/{view/Animate.java => animated/AnimateStartGame.java} (85%) diff --git a/src/main/java/course_project/sea_battle/view/Animate.java b/src/main/java/course_project/sea_battle/animated/AnimateStartGame.java similarity index 85% rename from src/main/java/course_project/sea_battle/view/Animate.java rename to src/main/java/course_project/sea_battle/animated/AnimateStartGame.java index 0a40cfdb..c189b8b2 100644 --- a/src/main/java/course_project/sea_battle/view/Animate.java +++ b/src/main/java/course_project/sea_battle/animated/AnimateStartGame.java @@ -1,6 +1,6 @@ -package course_project.sea_battle.view; +package course_project.sea_battle.animated; -public class Animate extends Thread { +public class AnimateStartGame extends Thread { @Override public void run() { System.out.println("*****************************"); diff --git a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java index a2987116..d5548ced 100644 --- a/src/main/java/course_project/sea_battle/conroller/SeaBattle.java +++ b/src/main/java/course_project/sea_battle/conroller/SeaBattle.java @@ -2,7 +2,7 @@ import course_project.sea_battle.model.Field; import course_project.sea_battle.model.ModelPlayer; -import course_project.sea_battle.view.Animate; +import course_project.sea_battle.animated.AnimateStartGame; import course_project.sea_battle.view.PaintFieldInPlay; import course_project.sea_battle.view.Speaker; @@ -13,7 +13,7 @@ public class SeaBattle extends Thread { public void run() { try (Scanner scanner = new Scanner(System.in)) { Dialog dialog = new Dialog(scanner); - Thread anim = new Animate(); + Thread anim = new AnimateStartGame(); anim.start(); anim.join(); Speaker.voice("dialogName"); From 339bda2a1043b1dd9ae4c8a4439a52aaf26d9acb Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Sun, 19 Sep 2021 19:19:52 +0300 Subject: [PATCH 82/92] field test add --- .../sea_battle/model/Field.java | 2 +- .../sea_battle/model/FieldTest.java | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/test/java/course_project/sea_battle/model/FieldTest.java diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index d6c89a43..07f131f8 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -54,7 +54,7 @@ public String addShip(Ship ship) { private boolean correct(int startPointA, int startPointB, int sizeField, boolean orientation) { if (startPointA < 0 || startPointB < 0 || startPointA > 9 || startPointB > 9 || sizeField < 1 || sizeField >= 5) return false; - if (orientation && field.length < startPointA + sizeField) + if (orientation && field.length < startPointA + sizeField ) return false; if (!orientation && field.length < startPointB + sizeField) return false; diff --git a/src/test/java/course_project/sea_battle/model/FieldTest.java b/src/test/java/course_project/sea_battle/model/FieldTest.java new file mode 100644 index 00000000..e581085a --- /dev/null +++ b/src/test/java/course_project/sea_battle/model/FieldTest.java @@ -0,0 +1,42 @@ +package course_project.sea_battle.model; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class FieldTest extends UnitBase { + + Field field = new Field(10, 10); + @Test + void addShip() { + + assertEquals("correct", field.addShip(new Ship(true, 1,1, 1))); + assertEquals("fieldNotEmpty", field.addShip(new Ship(true, 1,1, 1 ))); + + assertEquals("correct", field.addShip(new Ship(true, 4,4, 4 ))); + assertEquals("sizeShipBad", field.addShip(new Ship(true, 4,2, 4 ))); + + assertEquals("correct", field.addShip(new Ship(false, 9,9, 1 ))); + assertEquals("fieldNotEmpty", field.addShip(new Ship(false, 9,9, 1 ))); + + assertEquals("correct", field.addShip(new Ship(false, 7,7, 2 ))); + assertEquals("fieldNotEmpty", field.addShip(new Ship(false, 7,5, 2))); + } + + @Test + void shot() { + } + + @Test + void autoGenerateShips() { + } + + @Test + void canAddThisSize() { + } + + @Test + void autoShot() { + } +} \ No newline at end of file From 6a6d458307ccb2568c459b59c8241f3b8152963d Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 11:37:19 +0300 Subject: [PATCH 83/92] readme fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 91712e6c..8cba6186 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ | HW2 | [TrafficLight](./src/main/java/homework_2/traffic_light)
:wrench:[TrafficLightTest](./src/test/java/homework_2/traffic_light) | App reads one time the number of seconds since the beginning of the day and prints the traffic light| | HW2 | [PyramidPrinter](./src/main/java/homework_2/pyramid_printer)
:wrench:[PyramidPrinterTest](./src/test/java/homework_2/pyramid_printer)| App reads the number one time from the command line, and prints a pyramid of "x". | | HW2 | [RandomCharsTable](./src/main/java/homework_2/random_chars_table)
:wrench:[RandomCharsTableTest](./src/test/java/homework_2/random_chars_table)| App reads width and length of the table array, and strategy keyword (even or odd). App adds random chars from A to Z in table. Prints a table and all even or odd letters. | -| HW3 | [ImmutableClass](./src/main/java/homework_3/ImmutableClass)| ImmutableClass| +| HW3 | [ImmutableClass](./src/main/java/homework_3)| ImmutableClass| | HW4 | [CustomFileReader](./src/main/java/homework_4/custom_file_reader)
:wrench:[CustomFileReaderTest](./src/test/java/homework_4/custom_file_reader)| This application reads the text from the file, removes commas and periods and them outputs the text to the console. | | HW4 | [CustomAnnotation](./src/main/java/homework_4/custom_annotation)
:wrench:[CustomAnnotationTest](./src/test/java/homework_4/custom_annotation)| Create custom annotation| | HW4 | [Singleton](./src/main/java/homework_4/singleton)
:wrench:[SingletonTest](./src/test/java/homework_4/singleton)| This is a singleton app. you can create only 1 instance of this class.| From 488dbd944bbc4167f7ef7a8f0b5e7bdee6909950 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 17:34:10 +0300 Subject: [PATCH 84/92] fix bag --- .../sea_battle/model/Field.java | 6 ++-- .../sea_battle/service/ComputeHelper.java | 2 +- .../service/\320\241omputeHelperTest.java" | 32 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) rename "src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" => src/main/java/course_project/sea_battle/service/ComputeHelper.java (98%) diff --git a/src/main/java/course_project/sea_battle/model/Field.java b/src/main/java/course_project/sea_battle/model/Field.java index 07f131f8..cc46f98c 100644 --- a/src/main/java/course_project/sea_battle/model/Field.java +++ b/src/main/java/course_project/sea_battle/model/Field.java @@ -1,6 +1,6 @@ package course_project.sea_battle.model; -import course_project.sea_battle.service.СomputeHelper; +import course_project.sea_battle.service.ComputeHelper; import java.util.*; @@ -36,10 +36,10 @@ public String addShip(Ship ship) { List list = new ArrayList<>(); for (int i = 0; i < ship.getSize(); i++) { if (ship.getOrientation()) { - if (!СomputeHelper.chekCanPutShip(pointA + i, pointB, field)) return "fieldNotEmpty"; + if (!ComputeHelper.chekCanPutShip(pointA + i, pointB, field)) return "fieldNotEmpty"; list.add(new Integer[]{pointA + i, pointB}); } else { - if (!СomputeHelper.chekCanPutShip(pointA, pointB + i, field)) return "fieldNotEmpty"; + if (!ComputeHelper.chekCanPutShip(pointA, pointB + i, field)) return "fieldNotEmpty"; list.add(new Integer[]{pointA, pointB + i}); } } diff --git "a/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" b/src/main/java/course_project/sea_battle/service/ComputeHelper.java similarity index 98% rename from "src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" rename to src/main/java/course_project/sea_battle/service/ComputeHelper.java index 38a56771..db453655 100644 --- "a/src/main/java/course_project/sea_battle/service/\320\241omputeHelper.java" +++ b/src/main/java/course_project/sea_battle/service/ComputeHelper.java @@ -2,7 +2,7 @@ import course_project.sea_battle.model.Field; -public class СomputeHelper { +public class ComputeHelper { public static boolean chekCanPutShip(int pointA, int pointB, int[][] field) { if (pointA - 1 >= 0 && pointB - 1 >= 0 && pointA + 1 < 10 && pointB + 1 < 10) { diff --git "a/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" "b/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" index f5ebeef2..55034231 100644 --- "a/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" +++ "b/src/test/java/course_project/sea_battle/service/\320\241omputeHelperTest.java" @@ -10,24 +10,24 @@ class СomputeHelperTest extends UnitBase { @Test void chekCanPutShip() { int[][] field = new int[10][10]; - assertTrue(СomputeHelper.chekCanPutShip(0,0, field)); - assertTrue(СomputeHelper.chekCanPutShip(1,0, field)); - assertTrue(СomputeHelper.chekCanPutShip(0,1, field)); - assertTrue(СomputeHelper.chekCanPutShip(3,0, field)); + assertTrue(ComputeHelper.chekCanPutShip(0,0, field)); + assertTrue(ComputeHelper.chekCanPutShip(1,0, field)); + assertTrue(ComputeHelper.chekCanPutShip(0,1, field)); + assertTrue(ComputeHelper.chekCanPutShip(3,0, field)); field[1][1] = 5; - assertFalse(СomputeHelper.chekCanPutShip(1,0, field)); - assertFalse(СomputeHelper.chekCanPutShip(1,1, field)); - assertFalse(СomputeHelper.chekCanPutShip(0,1, field)); - assertFalse(СomputeHelper.chekCanPutShip(1,2, field)); + assertFalse(ComputeHelper.chekCanPutShip(1,0, field)); + assertFalse(ComputeHelper.chekCanPutShip(1,1, field)); + assertFalse(ComputeHelper.chekCanPutShip(0,1, field)); + assertFalse(ComputeHelper.chekCanPutShip(1,2, field)); - assertTrue(СomputeHelper.chekCanPutShip(5,5, field)); - assertTrue(СomputeHelper.chekCanPutShip(4,6, field)); - assertTrue(СomputeHelper.chekCanPutShip(8,7, field)); - assertTrue(СomputeHelper.chekCanPutShip(7,4, field)); + assertTrue(ComputeHelper.chekCanPutShip(5,5, field)); + assertTrue(ComputeHelper.chekCanPutShip(4,6, field)); + assertTrue(ComputeHelper.chekCanPutShip(8,7, field)); + assertTrue(ComputeHelper.chekCanPutShip(7,4, field)); field[5][6] = 5; - assertFalse(СomputeHelper.chekCanPutShip(5,5, field)); - assertFalse(СomputeHelper.chekCanPutShip(6,6, field)); - assertFalse(СomputeHelper.chekCanPutShip(6,7, field)); - assertFalse(СomputeHelper.chekCanPutShip(6,5, field)); + assertFalse(ComputeHelper.chekCanPutShip(5,5, field)); + assertFalse(ComputeHelper.chekCanPutShip(6,6, field)); + assertFalse(ComputeHelper.chekCanPutShip(6,7, field)); + assertFalse(ComputeHelper.chekCanPutShip(6,5, field)); } } \ No newline at end of file From 31acc6694a06eaaaf3eb6f18f4dd64875c61f1ad Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 18:47:47 +0300 Subject: [PATCH 85/92] fix --- .../course_project/sea_battle/model/CoordinateTranslator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java b/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java index d2d1144d..cd9ff996 100644 --- a/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java +++ b/src/main/java/course_project/sea_battle/model/CoordinateTranslator.java @@ -4,7 +4,7 @@ import java.util.Map; public class CoordinateTranslator { - private static Map coordinateTranslatorMap; + private static final Map coordinateTranslatorMap; static { coordinateTranslatorMap = new HashMap<>(); coordinateTranslatorMap.put("a", 0); From e9d31540089ef184ba854360de1a7eab5d7a09ba Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 19:40:13 +0300 Subject: [PATCH 86/92] fix hw3 --- .../sea_battle/conroller/Dialog.java | 2 +- src/main/java/homework_3/ImmutableClass.java | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/main/java/course_project/sea_battle/conroller/Dialog.java b/src/main/java/course_project/sea_battle/conroller/Dialog.java index 3f53dd52..7f601096 100644 --- a/src/main/java/course_project/sea_battle/conroller/Dialog.java +++ b/src/main/java/course_project/sea_battle/conroller/Dialog.java @@ -50,7 +50,7 @@ public String shotPlayer(ModelPlayer player) { public boolean autoGenerate() { while (true) { - String choice = reader.nextLine(); + String choice = reader.nextLine().toLowerCase(Locale.ROOT); if (choice.matches("y|n")) { if (choice.equals("y")) { return true; diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index 5574f6eb..61b2d1b8 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -1,28 +1,31 @@ package homework_3; /* Requirements for the Immutable Class: -* 1. Class has 2 constructors with 2 required fields -* 2. Fields cannot be changed, you only have geters; -* 3. You can get the same one ImmutableClass with the changed field "three", -* using the method getImmutableClass(). He back new ImmutableClass. -* */ + * 1. Class has 2 constructors with 2 required fields + * 2. Fields cannot be changed, you only have geters; + * 3. You can get the same one ImmutableClass with the changed field "three", + * using the method getImmutableClass(). He back new ImmutableClass. + * */ public final class ImmutableClass { private final int one; private final String two; private final Character three; + private final String[] names; - public ImmutableClass(int one, String two) { + public ImmutableClass(int one, String two, String[] names) { this.one = one; this.two = two; this.three = 'A'; + this.names = names; } - public ImmutableClass(int one, String two, Character three) { + public ImmutableClass(int one, String two, Character three, String[] names) { this.one = one; this.two = two; this.three = three; + this.names = names; } public int getOne() { @@ -37,7 +40,17 @@ public Character getThree() { return three; } - public ImmutableClass getImmutableClass(Character a){ - return new ImmutableClass(one, two, a); + public String[] getNames() { + return names.clone(); + } + + public ImmutableClass getImmutableClass(int one) { + return new ImmutableClass(one, getTwo(), getThree(), getNames()); + } + + public ImmutableClass getImmutableClass(Character a) { + if (a != null) { + return new ImmutableClass(getOne(), getTwo(), a, getNames()); + } else return new ImmutableClass(getOne(), getTwo(), getThree(), getNames()); } } From 6a065220b9bea127f700e9b1616ce047f8d49c40 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 20:17:03 +0300 Subject: [PATCH 87/92] fix hw4 --- .../custom_file_reader/CustomFileReader.java | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java index 2b883ebf..597fa6c7 100644 --- a/src/main/java/homework_4/custom_file_reader/CustomFileReader.java +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -8,10 +8,8 @@ import java.nio.file.Paths; public class CustomFileReader { - private final String filePath = "C:\\Java_Core_June_2021\\src\\main\\resources\\custom_file_reader\\test_file"; - + private final String filePath = "src/main/resources/custom_file_reader/test_file"; public void run1() { - if (Files.exists(Paths.get(filePath))) { try { byte[] bytes = Files.readAllBytes(Paths.get(filePath)); @@ -26,40 +24,40 @@ public void run1() { public void run2() throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(filePath)); - StringBuilder string = new StringBuilder(); + try(BufferedReader reader = new BufferedReader(new FileReader(filePath))) { + StringBuilder string = new StringBuilder(); - while (reader.ready()) { - string.append(reader.readLine()).append("\n"); - } - reader.close(); - String resul = string.toString().replaceAll("[,.]", ""); - System.out.println(resul); + while (reader.ready()) { + string.append(reader.readLine()).append("\n"); + } + String resul = string.toString().replaceAll("[,.]", ""); + System.out.println(resul); + } } public void run3() throws IOException { - FileReader reader = new FileReader(filePath); - StringBuffer stringBuffer = new StringBuffer(); + try(FileReader reader = new FileReader(filePath)) { + StringBuffer stringBuffer = new StringBuffer(); - while (reader.ready()) { - int scan = reader.read(); - if (scan == ',' || scan == '.') { + while (reader.ready()) { + int scan = reader.read(); + if (scan == ',' || scan == '.') { - } else { - stringBuffer.append((char) scan); + } else { + stringBuffer.append((char) scan); + } } + System.out.println(stringBuffer); } - reader.close(); - System.out.println(stringBuffer); } //test helper public void changeFileText(String text) throws IOException { - FileWriter writer = new FileWriter(filePath); - if (text == null) return; - writer.write(text); - writer.close(); + try(FileWriter writer = new FileWriter(filePath)) { + if (text == null) return; + writer.write(text); + } } } From c0a1eccd0236152e412a99f066999143320ae91b Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 20:22:54 +0300 Subject: [PATCH 88/92] fix hw5 --- .../custom_regex_matcher/CustomRegexMatcher.java | 4 +++- .../homework_5/power_of_number/PowerOfNumber.java | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java index 8de765e0..80badfa1 100644 --- a/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java +++ b/src/main/java/homework_5/custom_regex_matcher/CustomRegexMatcher.java @@ -20,7 +20,9 @@ public void run() { } private boolean regex(String readLine) { - if (readLine.length() < 3) return false; + if (readLine.length() < 3) { + return false; + } return readLine.matches("(\\w+)@((mail)|(gmail)|(google)|(other)).([a-z]+)"); } diff --git a/src/main/java/homework_5/power_of_number/PowerOfNumber.java b/src/main/java/homework_5/power_of_number/PowerOfNumber.java index aa1fe21b..0e0d5b39 100644 --- a/src/main/java/homework_5/power_of_number/PowerOfNumber.java +++ b/src/main/java/homework_5/power_of_number/PowerOfNumber.java @@ -16,16 +16,16 @@ public void run() { System.out.println("Only 2 non-negative integers are allowed"); return; } - System.out.println(recursia(a, b)); + System.out.println(recursion(a, b)); } catch (NullPointerException | IOException | NumberFormatException e) { System.out.println("Only 2 non-negative integers are allowed"); } } - private long recursia(int a, int b) { - if (a == 0) return 0; - if (a == 1 || b == 0) return 1; - if (b == 1) return a; - return a * recursia(a, b - 1); + private long recursion(int number, int power) { + if (number == 0) return 0; + if (number == 1 || power == 0) return 1; + if (power == 1) return number; + return number * recursion(number, power - 1); } } From db9f58fe3de2f2ee9c352e2c2f44a411e37bcbc2 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Tue, 21 Sep 2021 20:31:23 +0300 Subject: [PATCH 89/92] fix hw6 --- .../map_problems_generator/MapProblemsMutableGenerator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java b/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java index 699c6a58..f4a3a070 100644 --- a/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java +++ b/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java @@ -1,5 +1,6 @@ package homework_6.map_problems_generator; +import java.util.Objects; import java.util.Random; public class MapProblemsMutableGenerator { @@ -33,6 +34,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return new Random().nextInt(Integer.MAX_VALUE-1); + return Objects.hash(a); } } From 9a0f100e97702d8975622da15d000f2731ac9d94 Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Wed, 22 Sep 2021 14:25:04 +0300 Subject: [PATCH 90/92] hw3 add main --- src/main/java/homework_3/Main.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/homework_3/Main.java diff --git a/src/main/java/homework_3/Main.java b/src/main/java/homework_3/Main.java new file mode 100644 index 00000000..fecbd499 --- /dev/null +++ b/src/main/java/homework_3/Main.java @@ -0,0 +1,16 @@ +package homework_3; + +import java.util.Arrays; + +public class Main { + public static void main(String[] args) { + ImmutableClass imut = new ImmutableClass(2, "string", 'G', new String[]{"one", "two"}); + String[] b = imut.getNames(); + System.out.println(Arrays.toString(b)); + b[0] = "changes"; + System.out.println(Arrays.toString(b)); + System.out.println(Arrays.toString(imut.getNames())); + + + } +} From 36feaf672fd14625a63ce4d88424108f38f089fe Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 23 Sep 2021 15:31:05 +0300 Subject: [PATCH 91/92] hw6 add main end change class MutableGenerator --- .../map_problems_generator/Main.java | 16 ++++++++++++++ .../MapProblemsMutableGenerator.java | 21 +++++++------------ 2 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 src/main/java/homework_6/map_problems_generator/Main.java diff --git a/src/main/java/homework_6/map_problems_generator/Main.java b/src/main/java/homework_6/map_problems_generator/Main.java new file mode 100644 index 00000000..4791a749 --- /dev/null +++ b/src/main/java/homework_6/map_problems_generator/Main.java @@ -0,0 +1,16 @@ +package homework_6.map_problems_generator; + +import java.util.HashMap; + +public class Main { + public static void main(String[] args) { + HashMap myMap = new HashMap<>(); + MapProblemsMutableGenerator mutab = new MapProblemsMutableGenerator("first"); + + myMap.put(mutab, 100); + System.out.println(myMap.get(mutab)); + + mutab.setSomeString("three"); + System.out.println(myMap.get(mutab)); + } +} diff --git a/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java b/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java index f4a3a070..8385d788 100644 --- a/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java +++ b/src/main/java/homework_6/map_problems_generator/MapProblemsMutableGenerator.java @@ -1,27 +1,22 @@ package homework_6.map_problems_generator; import java.util.Objects; -import java.util.Random; public class MapProblemsMutableGenerator { - private int a; + private String someInt; - public MapProblemsMutableGenerator(int a) { - this.a = a; + public MapProblemsMutableGenerator(String someInt) { + this.someInt = someInt; } - public int getA() { - return a; - } - - public void setA(int a) { - this.a = a; + public void setSomeString(String someInt) { + this.someInt = someInt; } @Override public String toString() { - return String.valueOf(a); + return String.valueOf(someInt); } @Override @@ -29,11 +24,11 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MapProblemsMutableGenerator that = (MapProblemsMutableGenerator) o; - return a == that.a; + return someInt == that.someInt; } @Override public int hashCode() { - return Objects.hash(a); + return Objects.hash(someInt); } } From 94b35793bd92021ebc109daf61dc4a7c03c4f07f Mon Sep 17 00:00:00 2001 From: Kollega1984 Date: Thu, 23 Sep 2021 15:38:30 +0300 Subject: [PATCH 92/92] hw3 add ane getter ImmutableClass --- src/main/java/homework_3/ImmutableClass.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index 61b2d1b8..7165d907 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -14,13 +14,6 @@ public final class ImmutableClass { private final Character three; private final String[] names; - public ImmutableClass(int one, String two, String[] names) { - this.one = one; - this.two = two; - this.three = 'A'; - this.names = names; - } - public ImmutableClass(int one, String two, Character three, String[] names) { this.one = one; this.two = two; @@ -48,9 +41,15 @@ public ImmutableClass getImmutableClass(int one) { return new ImmutableClass(one, getTwo(), getThree(), getNames()); } - public ImmutableClass getImmutableClass(Character a) { - if (a != null) { - return new ImmutableClass(getOne(), getTwo(), a, getNames()); + public ImmutableClass getImmutableClass(Character someChar) { + if (someChar != null) { + return new ImmutableClass(getOne(), getTwo(), someChar, getNames()); + } else return new ImmutableClass(getOne(), getTwo(), getThree(), getNames()); + } + + public ImmutableClass getImmutableClass(String[] str) { + if (str != null) { + return new ImmutableClass(getOne(), getTwo(), getThree(), str); } else return new ImmutableClass(getOne(), getTwo(), getThree(), getNames()); } }