From 076a20a22fea19cc5b099603f8ecc0b5d32bf317 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Mon, 5 Jul 2021 19:37:54 +0300 Subject: [PATCH 01/48] ds --- src/main/java/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 9f28e436..9f289c1b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,5 +3,5 @@ public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); } - +System.out.println("nothing special"); } From 6bf9f8e389cf7dec53a02097d7bc424895a77b3d Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Mon, 5 Jul 2021 20:18:11 +0300 Subject: [PATCH 02/48] ds --- .gitignore | 5 ++++- src/main/java/Main.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 8a0a60d2..2b1fb1b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ # Project exclude paths /.gradle/ /build/ -/build/classes/java/main/ \ No newline at end of file +/build/classes/java/main/ +/.idea/ +/gradle/ +/.DS_Store/ \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 9f289c1b..6210ccf9 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -2,6 +2,7 @@ public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); + System.out.println("Nice"); } -System.out.println("nothing special"); + } From 592a77055a6d3701a46472c8326cf8062469360b Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 6 Jul 2021 21:32:33 +0300 Subject: [PATCH 03/48] first_homework --- src/main/java/Main.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 6210ccf9..09f36e5b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,8 +1,10 @@ + public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); System.out.println("Nice"); + System.err.println("as"); } } From 17484b9af11895f24f2d05d81c6088dfbf1af6df Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 6 Jul 2021 21:33:03 +0300 Subject: [PATCH 04/48] first_homework --- src/main/java/homework_1/Main.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/main/java/homework_1/Main.java diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java new file mode 100644 index 00000000..9b0cd8c3 --- /dev/null +++ b/src/main/java/homework_1/Main.java @@ -0,0 +1,12 @@ +package homework_1; + +public class Main { + public static void main(String[] args) { + for (String arg : args) { + if (arg.equals("ошибка")) { + System.err.println("ошибка"); + break; + } System.out.println(arg + ":" + arg.length() + " букв"); + } + } +} From e5c1fbfce420d86266a32cf1469448b13ff0c59f Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 7 Jul 2021 18:42:04 +0300 Subject: [PATCH 05/48] first_homework --- src/main/java/Main.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 9f28e436..8203e603 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -2,6 +2,7 @@ public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); + } } From 366079a2f5d83c6b96f166920e613f0f6188ca65 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Mon, 12 Jul 2021 14:56:22 +0300 Subject: [PATCH 06/48] first_homework --- src/main/java/homework_1/Main.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 9b0cd8c3..73538296 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -3,10 +3,10 @@ public class Main { public static void main(String[] args) { for (String arg : args) { - if (arg.equals("ошибка")) { - System.err.println("ошибка"); + if (arg.equals("Alarm")) { + System.err.println("Alarm"); break; - } System.out.println(arg + ":" + arg.length() + " букв"); + } System.out.println(arg + ":" + arg.length()); } } } From 13419a1f0930a0271fc74325f8ceba91712392ba Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Mon, 12 Jul 2021 16:13:59 +0300 Subject: [PATCH 07/48] first_homework --- src/main/java/{Main.java => Main_one.java} | 2 +- src/main/java/homework_1/Main.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) rename src/main/java/{Main.java => Main_one.java} (79%) diff --git a/src/main/java/Main.java b/src/main/java/Main_one.java similarity index 79% rename from src/main/java/Main.java rename to src/main/java/Main_one.java index 8203e603..8ea2200c 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main_one.java @@ -1,4 +1,4 @@ -public class Main { +public class Main_one { public static void main(String[] args) { System.out.println("Hello, World!"); diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 73538296..b110caef 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -2,9 +2,11 @@ public class Main { public static void main(String[] args) { + final String ANSI_RED = "\u001B[31m"; + final String ANSI_RESET = "\u001B[0m"; for (String arg : args) { if (arg.equals("Alarm")) { - System.err.println("Alarm"); + System.out.println(ANSI_RED + "Alarm!" + ANSI_RESET); break; } System.out.println(arg + ":" + arg.length()); } From ad6354cab8b061cfc186c82dc2e12568712cb582 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 13 Jul 2021 17:00:53 +0300 Subject: [PATCH 08/48] second_homework --- src/main/java/homework_2/PyramidPrinter.java | 21 ++++++++ .../java/homework_2/RandomCharsTable.java | 51 +++++++++++++++++++ src/main/java/homework_2/TrafficLight.java | 40 +++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 src/main/java/homework_2/PyramidPrinter.java create mode 100644 src/main/java/homework_2/RandomCharsTable.java create mode 100644 src/main/java/homework_2/TrafficLight.java diff --git a/src/main/java/homework_2/PyramidPrinter.java b/src/main/java/homework_2/PyramidPrinter.java new file mode 100644 index 00000000..7eb8ace4 --- /dev/null +++ b/src/main/java/homework_2/PyramidPrinter.java @@ -0,0 +1,21 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class PyramidPrinter { + + public static void main(String[] args) throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int pyramid = Integer.parseInt(reader.readLine()); + char[] arr = new char[pyramid]; + while (true) { + for (int i = 0; i < pyramid; i++) { + arr[i] = 'x'; + System.out.println(arr); + } + break; + } + } +} diff --git a/src/main/java/homework_2/RandomCharsTable.java b/src/main/java/homework_2/RandomCharsTable.java new file mode 100644 index 00000000..6b372b9d --- /dev/null +++ b/src/main/java/homework_2/RandomCharsTable.java @@ -0,0 +1,51 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; + +public class RandomCharsTable { + public static void main(String[] args) throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int length = Integer.parseInt(reader.readLine()); + int width = Integer.parseInt(reader.readLine()); + String strategy = checkStrategy(); + char[][] arr = new char[length][width]; + String res = ""; + for (int i = 0; i < length; i++) { + for (int j = 0; j < width; j++) { + double x = (Math.random() * ((90 - 65) + 1)) + 65; + int check = (int) x; + char result = (char) x; + arr[i][j] = result; + if (strategy.equals("even")) { + if (check % 2 == 0) { + res += " " + (char) check + " ,"; + } + } else { + if (check % 2 != 0) { + res += " " + (char) check + " ,"; + } + } + } + } + System.out.println(Arrays.deepToString(arr)); + if (strategy.equals("even")) { + System.out.println("Even number : " + res.substring(0, res.length() - 1)); + } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); + } + + private static String checkStrategy() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + String strategy = reader.readLine(); //even odd + while (!strategy.equals("odd") || !strategy.equals("even")) { + if (strategy.equals("odd") || strategy.equals("even")) { + break; + } + System.out.println("You should print : even or odd"); + strategy = reader.readLine(); + } + return strategy; + } +} diff --git a/src/main/java/homework_2/TrafficLight.java b/src/main/java/homework_2/TrafficLight.java new file mode 100644 index 00000000..c20627b8 --- /dev/null +++ b/src/main/java/homework_2/TrafficLight.java @@ -0,0 +1,40 @@ +package homework_2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class TrafficLight { + public static final String ANSI_RESET = "\u001B[0m"; + public static final String ANSI_RED = "\u001B[31m"; + public static final String ANSI_GREEN = "\u001B[32m"; + public static final String ANSI_YELLOW = "\u001B[33m"; + + public static void main(String[] args) throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int count = 0; + while (count < 3) { + int light = Integer.parseInt(reader.readLine()); + int res = 60; + int result = light % res; + if (light < 0) { + System.out.println("Please use positive number"); + count++; + } + if (light > 86399) { + System.out.println("Please use number between 0 and 86399"); + count++; + } else { + if (result >= 0 && result < 35) { + System.out.println(ANSI_GREEN + "green" + ANSI_RESET); + } + if (result >= 35 && result < 40) { + System.out.println(ANSI_YELLOW + "yellow" + ANSI_RESET); + } + if (result >= 40 && result < 60) { + System.out.println(ANSI_RED + "red" + ANSI_RESET); + } + } + } + } +} From 3e4884fef3d58ce4b6fb6ea6fb3d83f1bcc7cd2f Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 13 Jul 2021 19:24:00 +0300 Subject: [PATCH 09/48] first_homework_again i have no idea what do i do wrong --- src/main/java/homework_1/Main.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index b110caef..923aa89d 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,14 +1,16 @@ package homework_1; public class Main { + private static final String RED = "\u001B[31m"; + private static final String RESET = "\u001B[0m"; + public static void main(String[] args) { - final String ANSI_RED = "\u001B[31m"; - final String ANSI_RESET = "\u001B[0m"; - for (String arg : args) { - if (arg.equals("Alarm")) { - System.out.println(ANSI_RED + "Alarm!" + ANSI_RESET); + for(String argument: args){ + if(argument.equals("ошибка")){ + System.out.println(RED + "Тревога!" + RESET); break; - } System.out.println(arg + ":" + arg.length()); + } + System.out.println(argument + ": " + argument.length() + " букв"); } } } From cf48abec832a9abd0f40603119f92149359c48be Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 13 Jul 2021 19:32:06 +0300 Subject: [PATCH 10/48] Create README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..9f59e5bc --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Java Core June 2021 + +## *Konstantin Ivanov* + +| Number | Solution | Short description +| --- | --- | --- | +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_1/Main.java) | The app that reads input arguments and prints them, until "error" argument | + From 7b1def24bdda3bb31a85eafc4931d9a500744c75 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 13 Jul 2021 19:33:27 +0300 Subject: [PATCH 11/48] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9f59e5bc..0091f117 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,5 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_1/Main.java) | The app that reads input arguments and prints them, until "error" argument | +| HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/Main.java) | The app with "Traffic light","PyramidPrinter","RandomCharsTable" homework | From 9c67241eab6c9481fb2f3c896b6b13a8d45b7097 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 13 Jul 2021 19:34:20 +0300 Subject: [PATCH 12/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0091f117..d9836272 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,5 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_1/Main.java) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/Main.java) | The app with "Traffic light","PyramidPrinter","RandomCharsTable" homework | +| HW2 | [Three homework](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/konstantinIvanov/src/main/java/homework_2) | The app with "Traffic light","PyramidPrinter","RandomCharsTable" homework | From cfdb99b48e406169bd32fe7522cfee8427532a27 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 13 Jul 2021 22:30:54 +0300 Subject: [PATCH 13/48] fixed RandomCharsTable task --- .../java/homework_2/RandomCharsTable.java | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/main/java/homework_2/RandomCharsTable.java b/src/main/java/homework_2/RandomCharsTable.java index 6b372b9d..0c01e076 100644 --- a/src/main/java/homework_2/RandomCharsTable.java +++ b/src/main/java/homework_2/RandomCharsTable.java @@ -8,16 +8,24 @@ public class RandomCharsTable { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - int length = Integer.parseInt(reader.readLine()); - int width = Integer.parseInt(reader.readLine()); - String strategy = checkStrategy(); + String str = reader.readLine(); + String array[] = str.split(" "); + int length = Integer.parseInt(array[0]); + int width = Integer.parseInt(array[1]); + String strategy = array[2]; + while (!strategy.equals("odd") || !strategy.equals("even")) { + if (strategy.equals("odd") || strategy.equals("even")) { + break; + } + System.out.println("You should print : even or odd"); + strategy = reader.readLine(); + } char[][] arr = new char[length][width]; String res = ""; for (int i = 0; i < length; i++) { for (int j = 0; j < width; j++) { - double x = (Math.random() * ((90 - 65) + 1)) + 65; - int check = (int) x; - char result = (char) x; + int check = (int) (Math.random() * ((90 - 65) + 1)) + 65; + char result = (char) check; arr[i][j] = result; if (strategy.equals("even")) { if (check % 2 == 0) { @@ -35,17 +43,4 @@ public static void main(String[] args) throws IOException { System.out.println("Even number : " + res.substring(0, res.length() - 1)); } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); } - - private static String checkStrategy() throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - String strategy = reader.readLine(); //even odd - while (!strategy.equals("odd") || !strategy.equals("even")) { - if (strategy.equals("odd") || strategy.equals("even")) { - break; - } - System.out.println("You should print : even or odd"); - strategy = reader.readLine(); - } - return strategy; - } } From 5bb35c283433ae1f482d9aefab9a5acf77826103 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 13 Jul 2021 22:46:37 +0300 Subject: [PATCH 14/48] delete Main --- src/main/java/Main_one.java | 8 -------- src/main/java/homework_1/Main.java | 15 +++++++++------ 2 files changed, 9 insertions(+), 14 deletions(-) delete mode 100644 src/main/java/Main_one.java diff --git a/src/main/java/Main_one.java b/src/main/java/Main_one.java deleted file mode 100644 index 8ea2200c..00000000 --- a/src/main/java/Main_one.java +++ /dev/null @@ -1,8 +0,0 @@ -public class Main_one { - - public static void main(String[] args) { - System.out.println("Hello, World!"); - - } - -} diff --git a/src/main/java/homework_1/Main.java b/src/main/java/homework_1/Main.java index 923aa89d..d59dd244 100644 --- a/src/main/java/homework_1/Main.java +++ b/src/main/java/homework_1/Main.java @@ -1,16 +1,19 @@ package homework_1; public class Main { - private static final String RED = "\u001B[31m"; - private static final String RESET = "\u001B[0m"; + + public static final String ANSI_RED = "\u001B[31m"; + + public static final String ANSI_RESET = "\u001B[0m"; public static void main(String[] args) { - for(String argument: args){ - if(argument.equals("ошибка")){ - System.out.println(RED + "Тревога!" + RESET); + for (String s : args) { + if (s.equals("error")) { + System.out.println(ANSI_RED + "Alarm!" + ANSI_RESET); break; + } else { + System.out.println(s + ": " + s.length() + " letters"); } - System.out.println(argument + ": " + argument.length() + " букв"); } } } From cb875beb78f29730908642621c0f1fe7d1305b31 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 20 Jul 2021 16:30:17 +0300 Subject: [PATCH 15/48] add start method! --- src/main/java/homework_1/Start.java | 7 +++++++ src/main/java/homework_2/pyramid_printer/Main.java | 10 ++++++++++ src/main/java/homework_2/random_chars_table/Main.java | 10 ++++++++++ 3 files changed, 27 insertions(+) create mode 100644 src/main/java/homework_1/Start.java create mode 100644 src/main/java/homework_2/pyramid_printer/Main.java create mode 100644 src/main/java/homework_2/random_chars_table/Main.java diff --git a/src/main/java/homework_1/Start.java b/src/main/java/homework_1/Start.java new file mode 100644 index 00000000..875811c8 --- /dev/null +++ b/src/main/java/homework_1/Start.java @@ -0,0 +1,7 @@ +package homework_1; + +import java.io.IOException; + +public interface Start { + void start() throws IOException; +} diff --git a/src/main/java/homework_2/pyramid_printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java new file mode 100644 index 00000000..a97d278c --- /dev/null +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -0,0 +1,10 @@ +package homework_2.pyramid_printer; + +import java.io.IOException; + +public class Main { + + public static void main(String[] args) throws IOException { + new PyramidPrinter().start(); + } +} 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..164728cd --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -0,0 +1,10 @@ +package homework_2.random_chars_table; + +import java.io.IOException; + +public class Main { + + public static void main(String[] args) throws IOException { + new RandomCharsTable().start(); + } +} From 4ed07ef671b28e388a3078ac7c1f4a8b3104e842 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 20 Jul 2021 16:31:55 +0300 Subject: [PATCH 16/48] add start method! --- .../pyramid_printer/PyramidPrinter.java | 31 +++++++++ .../random_chars_table/RandomCharsTable.java | 65 +++++++++++++++++++ .../java/homework_2/traffic_light/Main.java | 10 +++ .../{ => traffic_light}/TrafficLight.java | 18 +++-- 4 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 src/main/java/homework_2/pyramid_printer/PyramidPrinter.java create mode 100644 src/main/java/homework_2/random_chars_table/RandomCharsTable.java create mode 100644 src/main/java/homework_2/traffic_light/Main.java rename src/main/java/homework_2/{ => traffic_light}/TrafficLight.java (80%) diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java new file mode 100644 index 00000000..9e89c2ad --- /dev/null +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -0,0 +1,31 @@ +package homework_2.pyramid_printer; + +import homework_1.Start; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class PyramidPrinter implements Start { + + @Override + public void start() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + try { + int pyramid = Integer.parseInt(reader.readLine()); + char[] arr = new char[pyramid]; + while (true) { + for (int i = 0; i < pyramid; i++) { + arr[i] = 'x'; + System.out.println(arr); + } + break; + } + } catch (NumberFormatException e ) { + System.out.println("Please use number"); + return; + } finally { + reader.close(); + } + } +} 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..43fe3df9 --- /dev/null +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -0,0 +1,65 @@ +package homework_2.random_chars_table; + +import homework_1.Start; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class RandomCharsTable implements Start { + + private static void printResult(int length, int width, char arr[][], String strategy, String res) { + for (int i = 0; i < length; i++) { + for (int j = 0; j < width; j++) { + System.out.print("|" + arr[i][j]); + } + System.out.print("|"); + System.out.println(); + } + if (strategy.equals("even")) { + System.out.println("Even number : " + res.substring(0, res.length() - 1)); + } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); + } + + public void start() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + + try { + String str = reader.readLine(); + String array[] = str.split(" "); + int length = Integer.parseInt(array[0]); + int width = Integer.parseInt(array[1]); + String strategy = array[2]; + if (strategy.equals("odd") || strategy.equals("even")) { + char[][] arr = new char[length][width]; + String res = ""; + for (int i = 0; i < length; i++) { + for (int j = 0; j < width; j++) { + double x = (Math.random() * ((90 - 65) + 1)) + 65; + int check = (int) x; + char result = (char) x; + arr[i][j] = result; + if (strategy.equals("even")) { + if (check % 2 == 0) { + res += " " + (char) check + " ,"; + } + } else { + if (check % 2 != 0) { + res += " " + (char) check + " ,"; + } + } + } + } + printResult(length, width, arr, strategy, res); + } else { + System.out.println("After two number you should print even or odd"); + return; + } + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("You need to print two number and one String"); + return; + } finally { + reader.close(); + } + } +} 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..e2d7b2ab --- /dev/null +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -0,0 +1,10 @@ +package homework_2.traffic_light; + +import java.io.IOException; + +public class Main { + + public static void main(String[] args) throws IOException { + new TrafficLight().start(); + } +} diff --git a/src/main/java/homework_2/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java similarity index 80% rename from src/main/java/homework_2/TrafficLight.java rename to src/main/java/homework_2/traffic_light/TrafficLight.java index c20627b8..6766cedd 100644 --- a/src/main/java/homework_2/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -1,4 +1,4 @@ -package homework_2; +package homework_2.traffic_light; import java.io.BufferedReader; import java.io.IOException; @@ -10,20 +10,21 @@ public class TrafficLight { public static final String ANSI_GREEN = "\u001B[32m"; public static final String ANSI_YELLOW = "\u001B[33m"; - public static void main(String[] args) throws IOException { + + public void start() throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - int count = 0; - while (count < 3) { + try { int light = Integer.parseInt(reader.readLine()); int res = 60; int result = light % res; if (light < 0) { System.out.println("Please use positive number"); - count++; + return; } if (light > 86399) { System.out.println("Please use number between 0 and 86399"); - count++; + return; } else { if (result >= 0 && result < 35) { System.out.println(ANSI_GREEN + "green" + ANSI_RESET); @@ -35,6 +36,11 @@ public static void main(String[] args) throws IOException { System.out.println(ANSI_RED + "red" + ANSI_RESET); } } + } catch (NumberFormatException e) { + System.out.println("Please use number"); + return; + } finally { + reader.close(); } } } From 1276e48b6aa7a7f8ddf3d69dfa2bc062ca76e567 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 20 Jul 2021 16:33:53 +0300 Subject: [PATCH 17/48] Delete PyramidPrinter.java --- src/main/java/homework_2/PyramidPrinter.java | 21 -------------------- 1 file changed, 21 deletions(-) delete mode 100644 src/main/java/homework_2/PyramidPrinter.java diff --git a/src/main/java/homework_2/PyramidPrinter.java b/src/main/java/homework_2/PyramidPrinter.java deleted file mode 100644 index 7eb8ace4..00000000 --- a/src/main/java/homework_2/PyramidPrinter.java +++ /dev/null @@ -1,21 +0,0 @@ -package homework_2; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - -public class PyramidPrinter { - - public static void main(String[] args) throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - int pyramid = Integer.parseInt(reader.readLine()); - char[] arr = new char[pyramid]; - while (true) { - for (int i = 0; i < pyramid; i++) { - arr[i] = 'x'; - System.out.println(arr); - } - break; - } - } -} From b2d1c275658e251921b38c81f85b608af56addb7 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 20 Jul 2021 16:34:01 +0300 Subject: [PATCH 18/48] Delete RandomCharsTable.java --- .../java/homework_2/RandomCharsTable.java | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 src/main/java/homework_2/RandomCharsTable.java diff --git a/src/main/java/homework_2/RandomCharsTable.java b/src/main/java/homework_2/RandomCharsTable.java deleted file mode 100644 index 0c01e076..00000000 --- a/src/main/java/homework_2/RandomCharsTable.java +++ /dev/null @@ -1,46 +0,0 @@ -package homework_2; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Arrays; - -public class RandomCharsTable { - public static void main(String[] args) throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - String str = reader.readLine(); - String array[] = str.split(" "); - int length = Integer.parseInt(array[0]); - int width = Integer.parseInt(array[1]); - String strategy = array[2]; - while (!strategy.equals("odd") || !strategy.equals("even")) { - if (strategy.equals("odd") || strategy.equals("even")) { - break; - } - System.out.println("You should print : even or odd"); - strategy = reader.readLine(); - } - char[][] arr = new char[length][width]; - String res = ""; - for (int i = 0; i < length; i++) { - for (int j = 0; j < width; j++) { - int check = (int) (Math.random() * ((90 - 65) + 1)) + 65; - char result = (char) check; - arr[i][j] = result; - if (strategy.equals("even")) { - if (check % 2 == 0) { - res += " " + (char) check + " ,"; - } - } else { - if (check % 2 != 0) { - res += " " + (char) check + " ,"; - } - } - } - } - System.out.println(Arrays.deepToString(arr)); - if (strategy.equals("even")) { - System.out.println("Even number : " + res.substring(0, res.length() - 1)); - } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); - } -} From 884d1448fa095542d08e0ba488e389c0993d4b63 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 20 Jul 2021 16:44:16 +0300 Subject: [PATCH 19/48] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d9836272..365db6d0 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,8 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_1/Main.java) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [Three homework](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/konstantinIvanov/src/main/java/homework_2) | The app with "Traffic light","PyramidPrinter","RandomCharsTable" homework | +| HW2 | [TrafficLight homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/traffic_light/Main.java) | App reads current time in seconds from the console and prints the traffic light | +| HW2 | [Pyramid homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/pyramid_printer/Main.java) | The app that reads input argument and builds pyramid base on input value | +| HW2 | [RandomCharsTable homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/random_chars_table/Main.java) | App reads from the console width and length of the chart, strategy keyword (even or odd). Prints to the console the chart of random chars from A to Z | +[Link to CodingBat](https://codingbat.com/done?user=kostya-ivanov9623@mail.ru&tag=8599662828) From d34e1896bda40d3dea225625790dec1f202d3575 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 21 Jul 2021 15:55:59 +0300 Subject: [PATCH 20/48] add start method! --- src/main/java/homework_3/ImmutableClass.java | 53 ++++++++++++++++++++ 1 file changed, 53 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..eb120f03 --- /dev/null +++ b/src/main/java/homework_3/ImmutableClass.java @@ -0,0 +1,53 @@ +package homework_3; + +import java.util.LinkedList; +import java.util.List; + +public class ImmutableClass { + /* + no setters methods + make variables private and final + make class final + A parameterized constructor should initialize all the fields performing a deep copy + Deep Copy of objects should be performed in the getter methods + */ + private final int someInt; + private final double someDouble; + private final String someString; + private final List list; + + public ImmutableClass(int someInt, double someDouble, String someString, List list) { + this.someInt = someInt; + this.someDouble = someDouble; + this.someString = someString; + this.list = list; + } + + public ImmutableClass(List list) { + this.list = new LinkedList<>(list); + this.someDouble = 0.0; + this.someInt = 0; + this.someString = "default"; + } + + public int getSomeInt() { + return someInt; + } + + public double getSomeDouble() { + return someDouble; + } + + public String getSomeString() { + return someString; + } + + public List getList() { + return new LinkedList<>(list); + } + + public ImmutableClass getNew(List list) { + return new ImmutableClass(someInt, someDouble, someString, list); + } + +} From 9c257ed24a7ac6824e58e1ab0cac2e1a175e54d5 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Thu, 22 Jul 2021 14:10:51 +0300 Subject: [PATCH 21/48] add start method! --- src/main/java/homework_1/Run.java | 7 +++++++ src/main/java/homework_1/Start.java | 7 ------- src/main/java/homework_2/pyramid_printer/Main.java | 2 +- .../java/homework_2/pyramid_printer/PyramidPrinter.java | 6 +++--- src/main/java/homework_2/random_chars_table/Main.java | 2 +- .../homework_2/random_chars_table/RandomCharsTable.java | 6 +++--- src/main/java/homework_2/traffic_light/Main.java | 2 +- src/main/java/homework_2/traffic_light/TrafficLight.java | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) create mode 100644 src/main/java/homework_1/Run.java delete mode 100644 src/main/java/homework_1/Start.java diff --git a/src/main/java/homework_1/Run.java b/src/main/java/homework_1/Run.java new file mode 100644 index 00000000..8ff97a61 --- /dev/null +++ b/src/main/java/homework_1/Run.java @@ -0,0 +1,7 @@ +package homework_1; + +import java.io.IOException; + +public interface Run { + void run() throws IOException; +} diff --git a/src/main/java/homework_1/Start.java b/src/main/java/homework_1/Start.java deleted file mode 100644 index 875811c8..00000000 --- a/src/main/java/homework_1/Start.java +++ /dev/null @@ -1,7 +0,0 @@ -package homework_1; - -import java.io.IOException; - -public interface Start { - void start() throws IOException; -} diff --git a/src/main/java/homework_2/pyramid_printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java index a97d278c..1d8733a3 100644 --- a/src/main/java/homework_2/pyramid_printer/Main.java +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -5,6 +5,6 @@ public class Main { public static void main(String[] args) throws IOException { - new PyramidPrinter().start(); + new PyramidPrinter().run(); } } diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 9e89c2ad..8965521e 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -1,15 +1,15 @@ package homework_2.pyramid_printer; -import homework_1.Start; +import homework_1.Run; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class PyramidPrinter implements Start { +public class PyramidPrinter implements Run { @Override - public void start() throws IOException { + public void run() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { int pyramid = Integer.parseInt(reader.readLine()); 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 164728cd..e0708d5a 100644 --- a/src/main/java/homework_2/random_chars_table/Main.java +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -5,6 +5,6 @@ public class Main { public static void main(String[] args) throws IOException { - new RandomCharsTable().start(); + 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 43fe3df9..b49c72ae 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,12 +1,12 @@ package homework_2.random_chars_table; -import homework_1.Start; +import homework_1.Run; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class RandomCharsTable implements Start { +public class RandomCharsTable implements Run { private static void printResult(int length, int width, char arr[][], String strategy, String res) { for (int i = 0; i < length; i++) { @@ -21,7 +21,7 @@ private static void printResult(int length, int width, char arr[][], String stra } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); } - public void start() throws IOException { + public void run() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index e2d7b2ab..8227f297 100644 --- a/src/main/java/homework_2/traffic_light/Main.java +++ b/src/main/java/homework_2/traffic_light/Main.java @@ -5,6 +5,6 @@ public class Main { public static void main(String[] args) throws IOException { - new TrafficLight().start(); + new TrafficLight().run(); } } diff --git a/src/main/java/homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java index 6766cedd..c0b2ef59 100644 --- a/src/main/java/homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -11,7 +11,7 @@ public class TrafficLight { public static final String ANSI_YELLOW = "\u001B[33m"; - public void start() throws IOException { + public void run() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { From c8341342feba74661c1ddd98d8c1bc608d06aaab Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Thu, 22 Jul 2021 18:41:12 +0300 Subject: [PATCH 22/48] add junit test on homework --- .../java/homework_2/pyramid_printer/Main.java | 2 +- .../pyramid_printer/PyramidPrinter.java | 37 +++--- .../homework_2/random_chars_table/Main.java | 2 +- .../random_chars_table/RandomCharsTable.java | 14 ++- .../java/homework_2/traffic_light/Main.java | 2 +- .../traffic_light/TrafficLight.java | 21 ++-- src/test/java/base/UnitBase.java | 111 +++++++++--------- .../java/homework_2/PyramidPrinterTest.java | 70 +++++++++++ .../java/homework_2/RandomCharsTableTest.java | 37 ++++++ .../java/homework_2/TrafficLightTest.java | 63 ++++++++++ 10 files changed, 273 insertions(+), 86 deletions(-) create mode 100644 src/test/java/homework_2/PyramidPrinterTest.java create mode 100644 src/test/java/homework_2/RandomCharsTableTest.java create mode 100644 src/test/java/homework_2/TrafficLightTest.java diff --git a/src/main/java/homework_2/pyramid_printer/Main.java b/src/main/java/homework_2/pyramid_printer/Main.java index 1d8733a3..8c13fde3 100644 --- a/src/main/java/homework_2/pyramid_printer/Main.java +++ b/src/main/java/homework_2/pyramid_printer/Main.java @@ -4,7 +4,7 @@ public class Main { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { new PyramidPrinter().run(); } } diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index 8965521e..fce03fe7 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -8,24 +8,29 @@ public class PyramidPrinter implements Run { - @Override - public void run() throws IOException { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - try { - int pyramid = Integer.parseInt(reader.readLine()); - char[] arr = new char[pyramid]; - while (true) { - for (int i = 0; i < pyramid; i++) { - arr[i] = 'x'; - System.out.println(arr); - } - break; + public void run() { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + int rows = Integer.parseInt(reader.readLine()); + if (rows<0) { + System.out.println("Use positive number"); + return; } - } catch (NumberFormatException e ) { - System.out.println("Please use number"); + printPyramid(rows); + } catch (IOException e) { + e.printStackTrace(); return; - } finally { - reader.close(); + } catch (NumberFormatException e){ + System.out.println("Only integer!"); + return; + } + } + + static void printPyramid(int rows){ + for (int i = 1; i <= rows; i++) { + for (int j = 0; j < i; j++) { + System.out.print("x"); + } + System.out.println(); } } } 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 e0708d5a..4e445173 100644 --- a/src/main/java/homework_2/random_chars_table/Main.java +++ b/src/main/java/homework_2/random_chars_table/Main.java @@ -4,7 +4,7 @@ public class Main { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { 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 b49c72ae..1646b561 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -21,7 +21,7 @@ private static void printResult(int length, int width, char arr[][], String stra } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); } - public void run() throws IOException { + public void run() { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { @@ -29,6 +29,10 @@ public void run() throws IOException { String array[] = str.split(" "); int length = Integer.parseInt(array[0]); int width = Integer.parseInt(array[1]); + if (length<=1||width<=1) { + System.out.println("Use number bigger than one"); + return; + } String strategy = array[2]; if (strategy.equals("odd") || strategy.equals("even")) { char[][] arr = new char[length][width]; @@ -58,8 +62,14 @@ public void run() throws IOException { } catch (ArrayIndexOutOfBoundsException e) { System.out.println("You need to print two number and one String"); return; + } catch (IOException e) { + e.printStackTrace(); } finally { - reader.close(); + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } } } } diff --git a/src/main/java/homework_2/traffic_light/Main.java b/src/main/java/homework_2/traffic_light/Main.java index 8227f297..bbc08d3f 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) throws IOException { + public static void main(String[] args) { new TrafficLight().run(); } } diff --git a/src/main/java/homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java index c0b2ef59..33f9db28 100644 --- a/src/main/java/homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -5,13 +5,8 @@ import java.io.InputStreamReader; public class TrafficLight { - public static final String ANSI_RESET = "\u001B[0m"; - public static final String ANSI_RED = "\u001B[31m"; - public static final String ANSI_GREEN = "\u001B[32m"; - public static final String ANSI_YELLOW = "\u001B[33m"; - - public void run() throws IOException { + public void run() { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { @@ -27,20 +22,26 @@ public void run() throws IOException { return; } else { if (result >= 0 && result < 35) { - System.out.println(ANSI_GREEN + "green" + ANSI_RESET); + System.out.println("green"); } if (result >= 35 && result < 40) { - System.out.println(ANSI_YELLOW + "yellow" + ANSI_RESET); + System.out.println("yellow"); } if (result >= 40 && result < 60) { - System.out.println(ANSI_RED + "red" + ANSI_RESET); + System.out.println("red"); } } } catch (NumberFormatException e) { System.out.println("Please use number"); return; + } catch (IOException e) { + e.printStackTrace(); } finally { - reader.close(); + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } } } } diff --git a/src/test/java/base/UnitBase.java b/src/test/java/base/UnitBase.java index 97e2685b..3df30c70 100644 --- a/src/test/java/base/UnitBase.java +++ b/src/test/java/base/UnitBase.java @@ -1,73 +1,74 @@ package base; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintStream; +import homework_2.pyramid_printer.PyramidPrinter; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; public abstract class UnitBase { - protected ByteArrayOutputStream mockedOut = new ByteArrayOutputStream(); - protected final PrintStream originalOut = System.out; - protected final InputStream originalIn = System.in; + protected final PrintStream originalOut = System.out; + protected final InputStream originalIn = System.in; + protected ByteArrayOutputStream mockedOut = new ByteArrayOutputStream(); - @BeforeEach - void setUpStreams() { - System.setOut(new PrintStream(mockedOut)); - } + @BeforeEach + void setUpStreams() { + System.setOut(new PrintStream(mockedOut)); + } - @AfterEach - void restoreStreams() { - System.setOut(originalOut); - System.setIn(originalIn); - } + @AfterEach + void restoreStreams() { + System.setOut(originalOut); + System.setIn(originalIn); + } - // mock input as if you wrote it to console by hand - protected void setInput(String input) { - System.setIn(new ByteArrayInputStream(input.getBytes())); - } + // mock input as if you wrote it to console by hand + protected void setInput(String input) { + System.setIn(new ByteArrayInputStream(input.getBytes())); + } - // returns whole output as string, will all line separators and etc - protected String getOutput() { - return mockedOut.toString().trim(); - } + // returns whole output as string, will all line separators and etc + protected String getOutput() { + return mockedOut.toString().trim(); + } + + // output as array, separated by lines. First line - getOutputLines()[0], and so on + protected String[] getOutputLines() { + return getOutput().split("\\r?\\n"); + } - // output as array, separated by lines. First line - getOutputLines()[0], and so on - protected String[] getOutputLines() { - return getOutput().split("\\r?\\n"); - } + // can be used to remove some strings from output (ex. remove "Please input number"). Put after run() + protected void removeFromOutput(String s) { + try { + String output = mockedOut.toString(); + mockedOut.reset(); + mockedOut.write(output.replace(s, "").getBytes()); + } catch (IOException e) { + e.printStackTrace(); + } + } - // can be used to remove some strings from output (ex. remove "Please input number"). Put after run() - protected void removeFromOutput(String s) { - try { - String output = mockedOut.toString(); - mockedOut.reset(); - mockedOut.write(output.replace(s, "").getBytes()); - } catch (IOException e) { - e.printStackTrace(); + // can be used to print output to testing console. Useful for debugging. Put after run(); + protected void printOut() { + System.setOut(originalOut); + System.out.println(mockedOut); + System.setOut(new PrintStream(mockedOut)); } - } +/* + @Test + void example() throws IOException { + setInput("2"); - // can be used to print output to testing console. Useful for debugging. Put after run(); - protected void printOut() { - System.setOut(originalOut); - System.out.println(mockedOut); - System.setOut(new PrintStream(mockedOut)); - } + new PyramidPrinter().run(); + printOut(); + removeFromOutput("Please input number"); -// @Test -// void example() { -// setInput("2"); -// -// new PyramidPrinter().run(); -// printOut(); -// removeFromOutput("Please input number"): -// -// assertEquals("x", getOutputLines()[0]); -// assertEquals("xx", getOutputLines()[1]); -// } + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + }*/ } diff --git a/src/test/java/homework_2/PyramidPrinterTest.java b/src/test/java/homework_2/PyramidPrinterTest.java new file mode 100644 index 00000000..6a010e9a --- /dev/null +++ b/src/test/java/homework_2/PyramidPrinterTest.java @@ -0,0 +1,70 @@ +package homework_2; + +import base.UnitBase; +import homework_2.pyramid_printer.PyramidPrinter; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + + +public class PyramidPrinterTest extends UnitBase { + + @Test + public void testPyramidWithOneArg() { + setInput("1"); + new PyramidPrinter().run(); + printOut(); + assertEquals("x", getOutputLines()[0]); + } + + @Test + void InputZeroAsArgument() { + setInput("0"); + new PyramidPrinter().run(); + printOut(); + assertEquals("", getOutputLines()[0]); + } + + @Test + public void testPyramidWithTwoArg() { + setInput("2"); + new PyramidPrinter().run(); + printOut(); + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + } + + @Test + public void testPyramidWithStringArg() { + setInput("String"); + new PyramidPrinter().run(); + printOut(); + removeFromOutput("Введите данные:"); + assertEquals("Only integer!", getOutputLines()[0]); + } + + @Test + public void testPyramidWithNegativeNumberArg() { + setInput("-2"); + new PyramidPrinter().run(); + printOut(); + removeFromOutput("Введите данные:"); + assertEquals("Use positive number", getOutputLines()[0]); + } + @Test + public void testPyramidWithDoubleArg() { + setInput("2.0"); + new PyramidPrinter().run(); + printOut(); + removeFromOutput("Введите данные:"); + assertEquals("Only integer!", getOutputLines()[0]); + } + @Test + public void testPyramidWithoutArg() { + setInput(""); + new PyramidPrinter().run(); + printOut(); + removeFromOutput("Введите данные:"); + assertEquals("Only integer!", getOutputLines()[0]); + } + +} diff --git a/src/test/java/homework_2/RandomCharsTableTest.java b/src/test/java/homework_2/RandomCharsTableTest.java new file mode 100644 index 00000000..4ab9a4ac --- /dev/null +++ b/src/test/java/homework_2/RandomCharsTableTest.java @@ -0,0 +1,37 @@ +package homework_2; + +import base.UnitBase; +import homework_2.random_chars_table.RandomCharsTable; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class RandomCharsTableTest extends UnitBase { + @Test + public void testOnZeroArg() { + setInput("0 0 even"); + new RandomCharsTable().run(); + printOut(); + assertEquals("Use number bigger than one", getOutputLines()[0]); + } + @Test + public void testOnEvenOrOddArg() { + setInput("3 2 notEven"); + new RandomCharsTable().run(); + printOut(); + assertEquals("After two number you should print even or odd", getOutputLines()[0]); + } + @Test + public void testOnEmptyArg() { + setInput(""); + assertThrows(NullPointerException.class, ()-> new RandomCharsTable().run()); + } + @Test + public void testOnNegativeArg() { + setInput("-10 -6 even"); + new RandomCharsTable().run(); + printOut(); + assertEquals("Use number bigger than one", getOutputLines()[0]); + } + +} diff --git a/src/test/java/homework_2/TrafficLightTest.java b/src/test/java/homework_2/TrafficLightTest.java new file mode 100644 index 00000000..5a0e2037 --- /dev/null +++ b/src/test/java/homework_2/TrafficLightTest.java @@ -0,0 +1,63 @@ +package homework_2; + +import base.UnitBase; +import homework_2.traffic_light.TrafficLight; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TrafficLightTest extends UnitBase { + + @Test + public void trafficTestOnGreenColor() { + setInput("3"); + new TrafficLight().run(); + printOut(); + assertEquals("green", getOutputLines()[0]); + } + + @Test + public void trafficTestOnYellowColor() { + setInput("36"); + new TrafficLight().run(); + printOut(); + assertEquals("yellow", getOutputLines()[0]); + } + + @Test + public void trafficTestOnRedColor() { + setInput("43"); + new TrafficLight().run(); + printOut(); + assertEquals("red", getOutputLines()[0]); + } + + @Test + public void trafficTestOnString() { + setInput("Str"); + new TrafficLight().run(); + printOut(); + assertEquals("Please use number", getOutputLines()[0]); + } + @Test + public void trafficTestOnNegativeNumber() { + setInput("-5"); + new TrafficLight().run(); + printOut(); + assertEquals("Please use positive number", getOutputLines()[0]); + } + @Test + public void trafficTestOnBigNumber() { + setInput("86999"); + new TrafficLight().run(); + printOut(); + assertEquals("Please use number between 0 and 86399", getOutputLines()[0]); + } + @Test + public void trafficTestOnDouble() { + setInput("3.0"); + new TrafficLight().run(); + printOut(); + assertEquals("Please use number", getOutputLines()[0]); + } +} From 9f895789334fc7caeb959e1dfc57034957f5b966 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Mon, 26 Jul 2021 13:34:56 +0300 Subject: [PATCH 23/48] fixed little bugs --- .../pyramid_printer/PyramidPrinter.java | 4 +- .../random_chars_table/RandomCharsTable.java | 8 +-- .../traffic_light/TrafficLight.java | 50 ++++++++----------- .../java/homework_2/TrafficLightTest.java | 14 +++--- 4 files changed, 33 insertions(+), 43 deletions(-) diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index fce03fe7..ee03e336 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -12,7 +12,7 @@ public void run() { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { int rows = Integer.parseInt(reader.readLine()); if (rows<0) { - System.out.println("Use positive number"); + System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } printPyramid(rows); @@ -20,7 +20,7 @@ public void run() { e.printStackTrace(); return; } catch (NumberFormatException e){ - System.out.println("Only integer!"); + System.out.println("Only 1 non-negative integer is allowed as passed parameter"); return; } } 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 1646b561..416abbbf 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -17,8 +17,8 @@ private static void printResult(int length, int width, char arr[][], String stra System.out.println(); } if (strategy.equals("even")) { - System.out.println("Even number : " + res.substring(0, res.length() - 1)); - } else System.out.println("Odd number : " + res.substring(0, res.length() - 1)); + System.out.println("Even number -" + res.substring(0, res.length() - 1)); + } else System.out.println("Odd number -" + res.substring(0, res.length() - 1)); } public void run() { @@ -45,11 +45,11 @@ public void run() { arr[i][j] = result; if (strategy.equals("even")) { if (check % 2 == 0) { - res += " " + (char) check + " ,"; + res += " " + (char) check + ","; } } else { if (check % 2 != 0) { - res += " " + (char) check + " ,"; + res += " " + (char) check + ","; } } } diff --git a/src/main/java/homework_2/traffic_light/TrafficLight.java b/src/main/java/homework_2/traffic_light/TrafficLight.java index 33f9db28..e42ab50b 100644 --- a/src/main/java/homework_2/traffic_light/TrafficLight.java +++ b/src/main/java/homework_2/traffic_light/TrafficLight.java @@ -6,42 +6,32 @@ public class TrafficLight { - public void run() { + public void run() { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + String str; try { - int light = Integer.parseInt(reader.readLine()); - int res = 60; - int result = light % res; - if (light < 0) { - System.out.println("Please use positive number"); - return; - } - if (light > 86399) { - System.out.println("Please use number between 0 and 86399"); - return; + str = reader.readLine(); + int time = Integer.parseInt(str); + if (time < 0) { + System.out.println("Only 1 non-negative integer is allowed as passed parameter "); + } else if (time > 86399) { + System.out.println("The day is over"); } else { - if (result >= 0 && result < 35) { - System.out.println("green"); - } - if (result >= 35 && result < 40) { - System.out.println("yellow"); - } - if (result >= 40 && result < 60) { - System.out.println("red"); + int light = time % 60; + if (light < 35) { + System.out.println("GREEN"); + } else if (light < 40) { + System.out.println("YELLOW"); + } else if (light < 55) { + System.out.println("RED"); + } else { + System.out.println("YELLOW"); } } - } catch (NumberFormatException e) { - System.out.println("Please use number"); - return; - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - } + } catch (NumberFormatException | IOException e) { + System.out.println("Only 1 non-negative integer is allowed as passed parameter"); } } } + diff --git a/src/test/java/homework_2/TrafficLightTest.java b/src/test/java/homework_2/TrafficLightTest.java index 5a0e2037..3ea731a4 100644 --- a/src/test/java/homework_2/TrafficLightTest.java +++ b/src/test/java/homework_2/TrafficLightTest.java @@ -13,7 +13,7 @@ public void trafficTestOnGreenColor() { setInput("3"); new TrafficLight().run(); printOut(); - assertEquals("green", getOutputLines()[0]); + assertEquals("GREEN", getOutputLines()[0]); } @Test @@ -21,7 +21,7 @@ public void trafficTestOnYellowColor() { setInput("36"); new TrafficLight().run(); printOut(); - assertEquals("yellow", getOutputLines()[0]); + assertEquals("YELLOW", getOutputLines()[0]); } @Test @@ -29,7 +29,7 @@ public void trafficTestOnRedColor() { setInput("43"); new TrafficLight().run(); printOut(); - assertEquals("red", getOutputLines()[0]); + assertEquals("RED", getOutputLines()[0]); } @Test @@ -37,27 +37,27 @@ public void trafficTestOnString() { setInput("Str"); new TrafficLight().run(); printOut(); - assertEquals("Please use number", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @Test public void trafficTestOnNegativeNumber() { setInput("-5"); new TrafficLight().run(); printOut(); - assertEquals("Please use positive number", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @Test public void trafficTestOnBigNumber() { setInput("86999"); new TrafficLight().run(); printOut(); - assertEquals("Please use number between 0 and 86399", getOutputLines()[0]); + assertEquals("The day is over", getOutputLines()[0]); } @Test public void trafficTestOnDouble() { setInput("3.0"); new TrafficLight().run(); printOut(); - assertEquals("Please use number", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } } From 6fb521e9367ddb5537840d6e6c226c4cb549b4fb Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 4 Aug 2021 16:11:44 +0300 Subject: [PATCH 24/48] add singleton class --- .../java/homework_4/singleton/Singleton.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/homework_4/singleton/Singleton.java diff --git a/src/main/java/homework_4/singleton/Singleton.java b/src/main/java/homework_4/singleton/Singleton.java new file mode 100644 index 00000000..4ebecfdb --- /dev/null +++ b/src/main/java/homework_4/singleton/Singleton.java @@ -0,0 +1,17 @@ +package homework_4.singleton; + +public class Singleton { + private static Singleton singleton; + + private Singleton() { + + } + + public synchronized static Singleton getInstance() { + if (singleton == null) { + singleton = new Singleton(); + } + return singleton; + } + +} From 1644b8424e35223e18b80d05d43eaf257e3e9123 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 4 Aug 2021 16:17:33 +0300 Subject: [PATCH 25/48] add singleton class --- .../java/homework_4/Singleton/MySingleton.java | 17 +++++++++++++++++ .../java/homework_4/singleton/Singleton.java | 17 ----------------- 2 files changed, 17 insertions(+), 17 deletions(-) create mode 100644 src/main/java/homework_4/Singleton/MySingleton.java delete mode 100644 src/main/java/homework_4/singleton/Singleton.java diff --git a/src/main/java/homework_4/Singleton/MySingleton.java b/src/main/java/homework_4/Singleton/MySingleton.java new file mode 100644 index 00000000..835fa939 --- /dev/null +++ b/src/main/java/homework_4/Singleton/MySingleton.java @@ -0,0 +1,17 @@ +package homework_4.Singleton; + +public class MySingleton { + private static MySingleton singleton; + + private MySingleton() { + + } + + public synchronized static MySingleton getInstance() { + if (singleton == null) { + singleton = new MySingleton(); + } + return singleton; + } + +} diff --git a/src/main/java/homework_4/singleton/Singleton.java b/src/main/java/homework_4/singleton/Singleton.java deleted file mode 100644 index 4ebecfdb..00000000 --- a/src/main/java/homework_4/singleton/Singleton.java +++ /dev/null @@ -1,17 +0,0 @@ -package homework_4.singleton; - -public class Singleton { - private static Singleton singleton; - - private Singleton() { - - } - - public synchronized static Singleton getInstance() { - if (singleton == null) { - singleton = new Singleton(); - } - return singleton; - } - -} From 61d07ec091f8d1d4eab58724a243300d82be915a Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Mon, 9 Aug 2021 18:53:10 +0300 Subject: [PATCH 26/48] add customFileReader class add testCustomFileReader, testSingleton --- .../custom_file_reader/CustomFileReader.java | 85 +++++++++++++++++++ .../homework_4/custom_file_reader/Main.java | 15 ++++ .../resources/custom_file_reader/text.txt | 3 + .../java/homework_4/CustomFileReaderTest.java | 34 ++++++++ src/test/java/homework_4/SingletonTest.java | 15 ++++ 5 files changed, 152 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/text.txt create mode 100644 src/test/java/homework_4/CustomFileReaderTest.java create mode 100644 src/test/java/homework_4/SingletonTest.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 new file mode 100644 index 00000000..665b3c99 --- /dev/null +++ b/src/main/java/homework_4/custom_file_reader/CustomFileReader.java @@ -0,0 +1,85 @@ +package homework_4.custom_file_reader; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Scanner; + +import static java.nio.charset.StandardCharsets.UTF_8; + +public class CustomFileReader { + + private String message; + private File file; + private String filePath = "src/main/resources/custom_file_reader/text.txt"; + + public void run1() { + if (isFilePathExist(filePath)) { + file = new File(filePath); + Scanner scanner = null; + try { + scanner = new Scanner(file); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + while (scanner.hasNextLine()) { + message = scanner.nextLine(); + printResult(); + } + } else { + printErrorMessage(); + } + } + public void run2() { + if (isFilePathExist(filePath)) { + file = new File(filePath); + BufferedReader reader = null; + try { + reader = new BufferedReader(new FileReader(file)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + while (true) { + try { + if (!reader.ready()) break; + } catch (IOException e) { + e.printStackTrace(); + } + try { + message = reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + printResult(); + } + } + } + + public void run3() { + Path file = Paths.get(filePath); + List lines = null; + try { + lines = Files.readAllLines(Paths.get(filePath), UTF_8); + } catch (IOException e) { + e.printStackTrace(); + } + lines.stream().filter(s -> s.contains(",") || s.contains(".")) + .map(s -> s.replaceAll("(\\.)|(,)", "")) + .forEach(System.out::println); + } + + + private void printErrorMessage() { + System.out.println("Error"); + } + + private boolean isFilePathExist(String filePath) { + return new File(filePath).exists(); + } + + private void printResult() { + System.out.println(message.replaceAll("(\\.)|(,)", "")); + } +} 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..45b02f8d --- /dev/null +++ b/src/main/java/homework_4/custom_file_reader/Main.java @@ -0,0 +1,15 @@ +package homework_4.custom_file_reader; + +import java.io.File; +import java.io.IOException; + +public class Main { + + public static void main(String[] args) throws IOException { + File file = new File("src/main/resources/custom_file_reader/text.txt"); + file.createNewFile(); + new CustomFileReader().run1(); + new CustomFileReader().run2(); + new CustomFileReader().run3(); + } +} diff --git a/src/main/resources/custom_file_reader/text.txt b/src/main/resources/custom_file_reader/text.txt new file mode 100644 index 00000000..f8369461 --- /dev/null +++ b/src/main/resources/custom_file_reader/text.txt @@ -0,0 +1,3 @@ +This, text. should be, output. to the console. +without, commas. and, +without, dots. \ No newline at end of file diff --git a/src/test/java/homework_4/CustomFileReaderTest.java b/src/test/java/homework_4/CustomFileReaderTest.java new file mode 100644 index 00000000..01d3a11b --- /dev/null +++ b/src/test/java/homework_4/CustomFileReaderTest.java @@ -0,0 +1,34 @@ +package homework_4; + +import base.UnitBase; +import homework_4.custom_file_reader.CustomFileReader; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + + + +public class CustomFileReaderTest extends UnitBase { + + private boolean checkResult(String res) { + return !(res.contains(".") && res.contains(",")); + } + @Test + public void givenTextWhenRun1ThenExpected() { + new CustomFileReader().run1(); + String text = getOutput(); + assertTrue(checkResult(text)); + } + @Test + public void givenTextWhenRun2ThenExpected() { + new CustomFileReader().run2(); + String text = getOutput(); + assertTrue(checkResult(text)); + } + @Test + public void givenTextWhenRun3ThenExpected() { + new CustomFileReader().run3(); + String text = getOutput(); + assertTrue(checkResult(text)); + } + +} diff --git a/src/test/java/homework_4/SingletonTest.java b/src/test/java/homework_4/SingletonTest.java new file mode 100644 index 00000000..af5aca4d --- /dev/null +++ b/src/test/java/homework_4/SingletonTest.java @@ -0,0 +1,15 @@ +package homework_4; + +import homework_4.Singleton.MySingleton; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertSame; + +public class SingletonTest { + @Test + public void testSingleton() { + MySingleton expected = MySingleton.getInstance(); + MySingleton actual = MySingleton.getInstance(); + assertSame(expected, actual); + } +} From 4233fb2ab44b83dbff39379a7c8ff5284c214c53 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Thu, 12 Aug 2021 15:16:38 +0300 Subject: [PATCH 27/48] add custom test annotation add db annotation add junit test --- .../custom_annotation/db_annotation/Main.java | 113 ++++++++++++++++++ .../db_annotation/Student.java | 21 ++++ .../db_annotation/XField.java | 12 ++ .../db_annotation/XTable.java | 13 ++ .../test_annotation/AfterSuite.java | 11 ++ .../test_annotation/BeforeSuite.java | 11 ++ .../test_annotation/Main.java | 72 +++++++++++ .../test_annotation/Test.java | 12 ++ .../test_annotation/TestClass.java | 33 +++++ .../java/homework_4/CustomAnnotationTest.java | 42 +++++++ 10 files changed, 340 insertions(+) create mode 100644 src/main/java/homework_4/custom_annotation/db_annotation/Main.java create mode 100644 src/main/java/homework_4/custom_annotation/db_annotation/Student.java create mode 100644 src/main/java/homework_4/custom_annotation/db_annotation/XField.java create mode 100644 src/main/java/homework_4/custom_annotation/db_annotation/XTable.java create mode 100644 src/main/java/homework_4/custom_annotation/test_annotation/AfterSuite.java create mode 100644 src/main/java/homework_4/custom_annotation/test_annotation/BeforeSuite.java create mode 100644 src/main/java/homework_4/custom_annotation/test_annotation/Main.java create mode 100644 src/main/java/homework_4/custom_annotation/test_annotation/Test.java create mode 100644 src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java create mode 100644 src/test/java/homework_4/CustomAnnotationTest.java diff --git a/src/main/java/homework_4/custom_annotation/db_annotation/Main.java b/src/main/java/homework_4/custom_annotation/db_annotation/Main.java new file mode 100644 index 00000000..ba777d9f --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/db_annotation/Main.java @@ -0,0 +1,113 @@ +package homework_4.custom_annotation.db_annotation; + +import java.lang.reflect.Field; +import java.sql.*; +import java.util.HashMap; + +public class Main { + + public static String DB_URL = "jdbc:mysql://localhost:3306/DB_NAME"; + public static String User = ""; + public static String password = ""; + + private static Connection connection; + private static Statement statement; + + public static void main(String[] args) { + prepareTable(Student.class); + Student student = new Student(1, "kostya", 25, "kostya@gmail.com"); + saveObject(student); + } + + public static void prepareTable(Class myClass) { + if (!myClass.isAnnotationPresent(XTable.class)) throw new IllegalArgumentException(); + HashMap hashMap = new HashMap<>(); + hashMap.put(int.class, "INTEGER"); + hashMap.put(String.class, "VARCHAR(255)"); + try { + connection(); + String tableName = myClass.getAnnotation(XTable.class).name(); + statement.executeUpdate("DROP TABLE IF EXISTS " + tableName + ";"); + String createTable = "CREATE TABLE " + tableName + " ("; + Field[] fields = myClass.getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(XField.class)) { + createTable += field.getName() + " " + hashMap.get(field.getType()) + ", "; + } + } + createTable = createTable.substring(0, createTable.length() - 2); + createTable += ");"; + statement.executeUpdate(createTable); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + disconnect(); + } + } + + public static void saveObject(Object object) { + Class c = object.getClass(); + if (!c.isAnnotationPresent(XTable.class)) throw new IllegalArgumentException(); + try { + connection(); + String tableName = ((XTable) c.getAnnotation(XTable.class)).name(); + String insertQuery = "INSERT INTO " + tableName + " ("; + Field[] fields = c.getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(XField.class)) { + insertQuery += field.getName() + ", "; + } + } + insertQuery = insertQuery.substring(0, insertQuery.length() - 2); + insertQuery += ") VALUES ("; + for (Field field : fields) { + if (field.isAnnotationPresent(XField.class)) { + insertQuery += "?, "; + } + } + insertQuery = insertQuery.substring(0, insertQuery.length() - 2); + insertQuery += ");"; + PreparedStatement preparedStatement = connection.prepareStatement(insertQuery); + int counter = 1; + for (Field field : fields) { + if (field.isAnnotationPresent(XField.class)) { + preparedStatement.setObject(counter, field.get(object)); + counter++; + } + } + preparedStatement.executeUpdate(); + } catch (SQLException | IllegalAccessException e) { + e.printStackTrace(); + } finally { + disconnect(); + } + } + + public static void connection() throws SQLException { + connection = DriverManager.getConnection(DB_URL, User, password); + statement = connection.createStatement(); + } + + public static void disconnect() { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} +/* +CREATE TABLE students { +id INTEGER, +name VARCHAR(255), +score INTEGER, +mail VARCHAR(255) +}; + */ +/* +INSERT INTO students( +id, name , score , mail) +VALUES (?, ?, ? , ?); + */ diff --git a/src/main/java/homework_4/custom_annotation/db_annotation/Student.java b/src/main/java/homework_4/custom_annotation/db_annotation/Student.java new file mode 100644 index 00000000..131b9aab --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/db_annotation/Student.java @@ -0,0 +1,21 @@ +package homework_4.custom_annotation.db_annotation; + +@XTable(name = "students") +public class Student { + @XField + public int id; + @XField + public String name; + @XField + public int score; + @XField + public String mail; + + public Student(int id, String name, int score, String mail) { + this.id = id; + this.name = name; + this.score = score; + this.mail = mail; + } +} + diff --git a/src/main/java/homework_4/custom_annotation/db_annotation/XField.java b/src/main/java/homework_4/custom_annotation/db_annotation/XField.java new file mode 100644 index 00000000..742b50f6 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/db_annotation/XField.java @@ -0,0 +1,12 @@ +package homework_4.custom_annotation.db_annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface XField { + +} diff --git a/src/main/java/homework_4/custom_annotation/db_annotation/XTable.java b/src/main/java/homework_4/custom_annotation/db_annotation/XTable.java new file mode 100644 index 00000000..2e9eae2a --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/db_annotation/XTable.java @@ -0,0 +1,13 @@ +package homework_4.custom_annotation.db_annotation; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface XTable { + String name(); +} diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/AfterSuite.java b/src/main/java/homework_4/custom_annotation/test_annotation/AfterSuite.java new file mode 100644 index 00000000..015dd8ce --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/test_annotation/AfterSuite.java @@ -0,0 +1,11 @@ +package homework_4.custom_annotation.test_annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface AfterSuite { +} diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/BeforeSuite.java b/src/main/java/homework_4/custom_annotation/test_annotation/BeforeSuite.java new file mode 100644 index 00000000..30a0e8f3 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/test_annotation/BeforeSuite.java @@ -0,0 +1,11 @@ +package homework_4.custom_annotation.test_annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface BeforeSuite { +} diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/Main.java b/src/main/java/homework_4/custom_annotation/test_annotation/Main.java new file mode 100644 index 00000000..377bd99e --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/test_annotation/Main.java @@ -0,0 +1,72 @@ +package homework_4.custom_annotation.test_annotation; + + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; + +public class Main { + public static void main(String[] args) { + // new Main().start(); + } + + public void start() { + Class c = TestClass.class; + Method method[] = c.getDeclaredMethods(); + ArrayList arrayList = new ArrayList<>(); + Object testObj = null; + try { + testObj = c.newInstance(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + Method beforeMethod = null; + Method afterMethod = null; + for (Method method1 : method) { + if (method1.isAnnotationPresent(Test.class)) { + arrayList.add(method1); + } + if (method1.isAnnotationPresent(BeforeSuite.class)) { + if (beforeMethod == null) { + beforeMethod = method1; + } else throw new RuntimeException("Method beforeSuite can be only one"); + } + if (method1.isAnnotationPresent(AfterSuite.class)) { + if (afterMethod == null) { + afterMethod = method1; + } else throw new RuntimeException("Method afterSuite can be only one"); + } + } + arrayList.sort((o1, o2) -> o2.getAnnotation(Test.class).priority() - o1.getAnnotation(Test.class).priority()); + if (beforeMethod != null) { + try { + beforeMethod.invoke(testObj, null); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + for (Method o : arrayList) { + try { + o.invoke(testObj, null); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + if (afterMethod != null) { + try { + afterMethod.invoke(testObj, null); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } +} + diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/Test.java b/src/main/java/homework_4/custom_annotation/test_annotation/Test.java new file mode 100644 index 00000000..645059d9 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/test_annotation/Test.java @@ -0,0 +1,12 @@ +package homework_4.custom_annotation.test_annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Test { + int priority() default 3; +} diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java b/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java new file mode 100644 index 00000000..f430c630 --- /dev/null +++ b/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java @@ -0,0 +1,33 @@ +package homework_4.custom_annotation.test_annotation; + +public class TestClass { + @BeforeSuite + public void init() { + System.out.println("@BeforeSuite"); + } + + @Test(priority = 4) + public void test1() { + System.out.println("test with priority 4"); + } + + @Test(priority = 1) + public void test2() { + System.out.println("test with priority 1"); + } + + @Test(priority = 5) + public void test3() { + System.out.println("test with priority 5"); + } + + @Test(priority = 2) + public void test4() { + System.out.println("test with priority 2"); + } + + @AfterSuite + public void end() { + System.out.println("@AfterSuite"); + } +} diff --git a/src/test/java/homework_4/CustomAnnotationTest.java b/src/test/java/homework_4/CustomAnnotationTest.java new file mode 100644 index 00000000..7a207a1d --- /dev/null +++ b/src/test/java/homework_4/CustomAnnotationTest.java @@ -0,0 +1,42 @@ +package homework_4; + +import base.UnitBase; +import homework_4.custom_annotation.test_annotation.Main; +import org.junit.jupiter.api.Test; + + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CustomAnnotationTest extends UnitBase { + @Test + public void beforeSuiteTest() { + new Main().start(); + assertEquals("@BeforeSuite", getOutputLines()[0]); + } + @Test + public void testPriority() { + new Main().start(); + assertEquals("test with priority 5", getOutputLines()[1]); + } + @Test + public void testPriority1() { + new Main().start(); + assertEquals("test with priority 4", getOutputLines()[2]); + } + @Test + public void testPriority2() { + new Main().start(); + assertEquals("test with priority 2", getOutputLines()[3]); + } + @Test + public void testPriority3() { + new Main().start(); + assertEquals("test with priority 1", getOutputLines()[4]); + } + @Test + public void testPriority4() { + new Main().start(); + assertEquals("@AfterSuite", getOutputLines()[5]); + } + +} From 8082d30fb113e40fd9b29c47f063162993f36569 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Thu, 12 Aug 2021 15:27:14 +0300 Subject: [PATCH 28/48] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 365db6d0..95bb2a67 100644 --- a/README.md +++ b/README.md @@ -8,5 +8,10 @@ | HW2 | [TrafficLight homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/traffic_light/Main.java) | App reads current time in seconds from the console and prints the traffic light | | HW2 | [Pyramid homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/pyramid_printer/Main.java) | The app that reads input argument and builds pyramid base on input value | | HW2 | [RandomCharsTable homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_2/random_chars_table/Main.java) | App reads from the console width and length of the chart, strategy keyword (even or odd). Prints to the console the chart of random chars from A to Z | +| HW3 | [ImmutableClass homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_3/ImmutableClass.java) | Immutable class | +| HW4 | [Singleton homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/Singleton/MySingleton.java) | Singleton | +| HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | +| HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | + [Link to CodingBat](https://codingbat.com/done?user=kostya-ivanov9623@mail.ru&tag=8599662828) From 356fcff114834229e7f9a54261eef489a94cff53 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Fri, 20 Aug 2021 17:13:34 +0300 Subject: [PATCH 29/48] fix small bug --- .../custom_annotation/test_annotation/Main.java | 4 ++-- .../test_annotation/{Test.java => TestAnnotation.java} | 2 +- .../custom_annotation/test_annotation/TestClass.java | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) rename src/main/java/homework_4/custom_annotation/test_annotation/{Test.java => TestAnnotation.java} (89%) diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/Main.java b/src/main/java/homework_4/custom_annotation/test_annotation/Main.java index 377bd99e..ee1f1eec 100644 --- a/src/main/java/homework_4/custom_annotation/test_annotation/Main.java +++ b/src/main/java/homework_4/custom_annotation/test_annotation/Main.java @@ -25,7 +25,7 @@ public void start() { Method beforeMethod = null; Method afterMethod = null; for (Method method1 : method) { - if (method1.isAnnotationPresent(Test.class)) { + if (method1.isAnnotationPresent(TestAnnotation.class)) { arrayList.add(method1); } if (method1.isAnnotationPresent(BeforeSuite.class)) { @@ -39,7 +39,7 @@ public void start() { } else throw new RuntimeException("Method afterSuite can be only one"); } } - arrayList.sort((o1, o2) -> o2.getAnnotation(Test.class).priority() - o1.getAnnotation(Test.class).priority()); + arrayList.sort((o1, o2) -> o2.getAnnotation(TestAnnotation.class).priority() - o1.getAnnotation(TestAnnotation.class).priority()); if (beforeMethod != null) { try { beforeMethod.invoke(testObj, null); diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/Test.java b/src/main/java/homework_4/custom_annotation/test_annotation/TestAnnotation.java similarity index 89% rename from src/main/java/homework_4/custom_annotation/test_annotation/Test.java rename to src/main/java/homework_4/custom_annotation/test_annotation/TestAnnotation.java index 645059d9..cf827892 100644 --- a/src/main/java/homework_4/custom_annotation/test_annotation/Test.java +++ b/src/main/java/homework_4/custom_annotation/test_annotation/TestAnnotation.java @@ -7,6 +7,6 @@ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface Test { +public @interface TestAnnotation { int priority() default 3; } diff --git a/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java b/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java index f430c630..656ef340 100644 --- a/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java +++ b/src/main/java/homework_4/custom_annotation/test_annotation/TestClass.java @@ -6,22 +6,22 @@ public void init() { System.out.println("@BeforeSuite"); } - @Test(priority = 4) + @TestAnnotation(priority = 4) public void test1() { System.out.println("test with priority 4"); } - @Test(priority = 1) + @TestAnnotation(priority = 1) public void test2() { System.out.println("test with priority 1"); } - @Test(priority = 5) + @TestAnnotation(priority = 5) public void test3() { System.out.println("test with priority 5"); } - @Test(priority = 2) + @TestAnnotation(priority = 2) public void test4() { System.out.println("test with priority 2"); } From 4f4eb47558e92bd965abf438b873dea6fcfbb1b8 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Fri, 20 Aug 2021 17:20:47 +0300 Subject: [PATCH 30/48] add homework_5 with CustomRegexMatcher task plus PowerOfNumber task add junit test for homework_5 --- .../CustomRegexMatcher.java | 19 +++++++++ .../homework_5/customRegexMatcher/Main.java | 8 ++++ .../java/homework_5/powerOfNumber/Main.java | 9 ++++ .../powerOfNumber/PowerOfNumber.java | 32 +++++++++++++++ .../homework_5/CustomRegexMatcherTest.java | 41 +++++++++++++++++++ .../java/homework_5/PowerOfNumberTest.java | 39 ++++++++++++++++++ 6 files changed, 148 insertions(+) create mode 100644 src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java create mode 100644 src/main/java/homework_5/customRegexMatcher/Main.java create mode 100644 src/main/java/homework_5/powerOfNumber/Main.java create mode 100644 src/main/java/homework_5/powerOfNumber/PowerOfNumber.java create mode 100644 src/test/java/homework_5/CustomRegexMatcherTest.java create mode 100644 src/test/java/homework_5/PowerOfNumberTest.java diff --git a/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java b/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java new file mode 100644 index 00000000..89fb13c4 --- /dev/null +++ b/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java @@ -0,0 +1,19 @@ +package homework_5.customRegexMatcher; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class CustomRegexMatcher { + public void run() { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { + String message = reader.readLine(); + System.out.println(checkMail(message)); + } catch (IOException e) { + e.printStackTrace(); + } + } + public static boolean checkMail(String str) { + return str.matches("[0-9a-zA-Z_-]{5,}\\d*@\\w{2,}\\.\\w{2,}"); + } +} diff --git a/src/main/java/homework_5/customRegexMatcher/Main.java b/src/main/java/homework_5/customRegexMatcher/Main.java new file mode 100644 index 00000000..6524c6ed --- /dev/null +++ b/src/main/java/homework_5/customRegexMatcher/Main.java @@ -0,0 +1,8 @@ +package homework_5.customRegexMatcher; + +public class Main { + + public static void main(String[] args) { + new CustomRegexMatcher().run(); + } +} diff --git a/src/main/java/homework_5/powerOfNumber/Main.java b/src/main/java/homework_5/powerOfNumber/Main.java new file mode 100644 index 00000000..62aabd55 --- /dev/null +++ b/src/main/java/homework_5/powerOfNumber/Main.java @@ -0,0 +1,9 @@ +package homework_5.powerOfNumber; + +public class Main { + public static void main(String[] args) { + new PowerOfNumber().run(); + } +} + + diff --git a/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java new file mode 100644 index 00000000..0d90b1f0 --- /dev/null +++ b/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java @@ -0,0 +1,32 @@ +package homework_5.powerOfNumber; + +import java.util.Scanner; + +public class PowerOfNumber { + public void run() { + Scanner scanner = new Scanner(System.in); + try { + int fir = scanner.nextInt(); + int sec = scanner.nextInt(); + PowerOfNumber power = new PowerOfNumber(); + int result = power.rec(fir, sec); + System.out.println(result); + } catch (Exception e) { + System.out.println("Only 2 non-negative integers are allowed"); + } finally { + scanner.close(); + } + } + public int rec(int firstNumber, int secondNumber) { + if (firstNumber < 0 || secondNumber < 0) { + throw new RuntimeException("Only 2 non-negative integers are allowed"); + } + if (secondNumber == 0) { + return 1; + } + if (secondNumber > 0 ) { + return firstNumber * rec(firstNumber, secondNumber-1); + } + return rec(firstNumber, secondNumber) * secondNumber; + } +} \ No newline at end of file diff --git a/src/test/java/homework_5/CustomRegexMatcherTest.java b/src/test/java/homework_5/CustomRegexMatcherTest.java new file mode 100644 index 00000000..f738d4d0 --- /dev/null +++ b/src/test/java/homework_5/CustomRegexMatcherTest.java @@ -0,0 +1,41 @@ +package homework_5; + +import base.UnitBase; +import homework_5.customRegexMatcher.CustomRegexMatcher; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CustomRegexMatcherTest extends UnitBase { + + @Test + public void regexMailTest() { + assertTrue(new CustomRegexMatcher().checkMail("kostya_asdsa@mail.ru")); + } + @Test + public void regexMailTest2() { + assertFalse(new CustomRegexMatcher().checkMail("kostya_asdsa@mail.r")); + } + @Test + public void regexMailTest3() { + assertFalse(new CustomRegexMatcher().checkMail("kos@gmail.com")); + } + @Test + public void regexMailTest4() { + assertTrue(new CustomRegexMatcher().checkMail("something23-as_sa@gmail.ru")); + } + @Test + public void regexMailTest5() { + assertFalse(new CustomRegexMatcher().checkMail("notvalidmail@a.com")); + } + @Test + public void regexMailTest6() { + assertTrue(new CustomRegexMatcher().checkMail("some_mail123@yandex.ru")); + } + @Test + public void regexMailTest7() { + assertFalse(new CustomRegexMatcher().checkMail("kosdf23adsamail.ru")); + } + +} diff --git a/src/test/java/homework_5/PowerOfNumberTest.java b/src/test/java/homework_5/PowerOfNumberTest.java new file mode 100644 index 00000000..d990bcc3 --- /dev/null +++ b/src/test/java/homework_5/PowerOfNumberTest.java @@ -0,0 +1,39 @@ +package homework_5; + + +import base.UnitBase; +import homework_5.powerOfNumber.PowerOfNumber; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PowerOfNumberTest extends UnitBase { + @Test + public void testRecMethodWithNegativeNumber() { + setInput("-2"); + new PowerOfNumber().run(); + assertEquals("Only 2 non-negative integers are allowed", getOutputLines()[0]); + } + @Test + public void testRecMethondWithString() { + setInput("String"); + new PowerOfNumber().run(); + assertEquals("Only 2 non-negative integers are allowed", getOutputLines()[0]); + } + @Test + public void powerOfNumberTest() { + assertEquals(4,new PowerOfNumber().rec(2,2)); + } + @Test + public void powerOfNumberTest2() { + assertEquals(2,new PowerOfNumber().rec(2,1)); + } + @Test + public void powerOfNumberTest3() { + assertEquals(1,new PowerOfNumber().rec(2,0)); + } + @Test + public void powerOfNumberTest4() { + assertEquals(0,new PowerOfNumber().rec(0,2)); + } +} \ No newline at end of file From 145e65277efc543e51ae0c07d8897df4442830da Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 31 Aug 2021 19:48:04 +0300 Subject: [PATCH 31/48] add homework_6 --- src/main/java/homework_6/Main.java | 29 ++++++++++++ .../MapProblemsCollisionGenerator.java | 41 +++++++++++++++++ .../MapProblemsMutableGenerator.java | 44 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 src/main/java/homework_6/Main.java create mode 100644 src/main/java/homework_6/MapProblemsCollisionGenerator.java create mode 100644 src/main/java/homework_6/MapProblemsMutableGenerator.java diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java new file mode 100644 index 00000000..bdd62846 --- /dev/null +++ b/src/main/java/homework_6/Main.java @@ -0,0 +1,29 @@ +package homework_6; + +import java.util.HashMap; +import java.util.Map; + +public class Main { + + public static void main(String[] args) { + MapProblemsCollisionGenerator o1 = new MapProblemsCollisionGenerator(2,"name"); + MapProblemsCollisionGenerator o2 = new MapProblemsCollisionGenerator(3,"name"); + System.out.println(o1.hashCode() == o2.hashCode()); + Map map = new HashMap<>(); + MapProblemsMutableGenerator m1 = new MapProblemsMutableGenerator(1, "name"); + MapProblemsMutableGenerator same = new MapProblemsMutableGenerator(1, "name"); + MapProblemsMutableGenerator m2 = new MapProblemsMutableGenerator(2, "name2"); + MapProblemsMutableGenerator m3 = new MapProblemsMutableGenerator(3, "name3"); + MapProblemsMutableGenerator m4 = new MapProblemsMutableGenerator(4, "name4"); + map.put(m1, "1"); + map.put(m2, "2"); + map.put(m3, "3"); + map.put(m4, "4"); + System.out.println(m1.equals(same)); + System.out.println("Trying to get any value by key"); + map.get(m1); + map.get(m2); + map.get(m3); + map.get(m4); + } +} diff --git a/src/main/java/homework_6/MapProblemsCollisionGenerator.java b/src/main/java/homework_6/MapProblemsCollisionGenerator.java new file mode 100644 index 00000000..1f031352 --- /dev/null +++ b/src/main/java/homework_6/MapProblemsCollisionGenerator.java @@ -0,0 +1,41 @@ +package homework_6; + + +public class MapProblemsCollisionGenerator { + private int id; + private String name; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MapProblemsCollisionGenerator that = (MapProblemsCollisionGenerator) o; + return id == that.id; + } + + @Override + public int hashCode() { + return 1; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public MapProblemsCollisionGenerator(int id, String name) { + this.id = id; + this.name = name; + } +} diff --git a/src/main/java/homework_6/MapProblemsMutableGenerator.java b/src/main/java/homework_6/MapProblemsMutableGenerator.java new file mode 100644 index 00000000..49d4be0a --- /dev/null +++ b/src/main/java/homework_6/MapProblemsMutableGenerator.java @@ -0,0 +1,44 @@ +package homework_6; + +import java.util.Objects; +import java.util.Random; + +public class MapProblemsMutableGenerator { + private int id; + private String name; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MapProblemsMutableGenerator that = (MapProblemsMutableGenerator) o; + return id == that.id && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + Random random = new Random(); + return random.nextInt(Integer.MAX_VALUE); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public MapProblemsMutableGenerator(int id, String name) { + this.id = id; + this.name = name; + } +} From b6821086e94da6c95106564ecff0687803679149 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Fri, 3 Sep 2021 15:40:54 +0300 Subject: [PATCH 32/48] fix bugs in homework 2 and 3 --- src/main/java/homework_1/Run.java | 7 ------- .../pyramid_printer/PyramidPrinter.java | 3 +-- .../random_chars_table/RandomCharsTable.java | 20 +++++++++++-------- src/main/java/homework_3/ImmutableClass.java | 9 +-------- 4 files changed, 14 insertions(+), 25 deletions(-) delete mode 100644 src/main/java/homework_1/Run.java diff --git a/src/main/java/homework_1/Run.java b/src/main/java/homework_1/Run.java deleted file mode 100644 index 8ff97a61..00000000 --- a/src/main/java/homework_1/Run.java +++ /dev/null @@ -1,7 +0,0 @@ -package homework_1; - -import java.io.IOException; - -public interface Run { - void run() throws IOException; -} diff --git a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java index ee03e336..4a9ea67b 100644 --- a/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java +++ b/src/main/java/homework_2/pyramid_printer/PyramidPrinter.java @@ -1,12 +1,11 @@ package homework_2.pyramid_printer; -import homework_1.Run; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class PyramidPrinter implements Run { +public class PyramidPrinter { public void run() { try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { 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 416abbbf..ba898e3d 100644 --- a/src/main/java/homework_2/random_chars_table/RandomCharsTable.java +++ b/src/main/java/homework_2/random_chars_table/RandomCharsTable.java @@ -1,12 +1,13 @@ package homework_2.random_chars_table; -import homework_1.Run; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class RandomCharsTable implements Run { +public class RandomCharsTable { + private static final String ERROR_MESSAGE = "Passed parameters should match the format [positive integer] [positive integer] [even|odd]"; private static void printResult(int length, int width, char arr[][], String strategy, String res) { for (int i = 0; i < length; i++) { @@ -17,8 +18,8 @@ private static void printResult(int length, int width, char arr[][], String stra System.out.println(); } if (strategy.equals("even")) { - System.out.println("Even number -" + res.substring(0, res.length() - 1)); - } else System.out.println("Odd number -" + res.substring(0, res.length() - 1)); + System.out.println("Even letters -" + res.substring(0, res.length() - 1)); + } else System.out.println("Odd letters -" + res.substring(0, res.length() - 1)); } public void run() { @@ -29,8 +30,8 @@ public void run() { String array[] = str.split(" "); int length = Integer.parseInt(array[0]); int width = Integer.parseInt(array[1]); - if (length<=1||width<=1) { - System.out.println("Use number bigger than one"); + if (length<=0||width<=0) { + System.out.println(ERROR_MESSAGE); return; } String strategy = array[2]; @@ -56,14 +57,17 @@ public void run() { } printResult(length, width, arr, strategy, res); } else { - System.out.println("After two number you should print even or odd"); + System.out.println(ERROR_MESSAGE); return; } } catch (ArrayIndexOutOfBoundsException e) { - System.out.println("You need to print two number and one String"); + System.out.println(ERROR_MESSAGE); return; } catch (IOException e) { e.printStackTrace(); + }catch (Exception e) { + System.out.println(ERROR_MESSAGE); + return; } finally { try { reader.close(); diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java index eb120f03..623a943e 100644 --- a/src/main/java/homework_3/ImmutableClass.java +++ b/src/main/java/homework_3/ImmutableClass.java @@ -3,7 +3,7 @@ import java.util.LinkedList; import java.util.List; -public class ImmutableClass { +public final class ImmutableClass { /* no setters methods make variables private and final @@ -23,13 +23,6 @@ public ImmutableClass(int someInt, double someDouble, String someString, List list) { - this.list = new LinkedList<>(list); - this.someDouble = 0.0; - this.someInt = 0; - this.someString = "default"; - } - public int getSomeInt() { return someInt; } From c4dc14e00c52d97e270e4065b25f144bd2bf051f Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Tue, 14 Sep 2021 17:56:58 +0300 Subject: [PATCH 33/48] add homework_7 --- src/main/java/homework_7/Cat.java | 34 ++++++++++++++++++++ src/main/java/homework_7/Kitten.java | 38 +++++++++++++++++++++++ src/main/java/homework_7/KittenToCat.java | 5 +++ src/main/java/homework_7/Main.java | 9 ++++++ 4 files changed, 86 insertions(+) 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/KittenToCat.java create mode 100644 src/main/java/homework_7/Main.java diff --git a/src/main/java/homework_7/Cat.java b/src/main/java/homework_7/Cat.java new file mode 100644 index 00000000..8c9c8c51 --- /dev/null +++ b/src/main/java/homework_7/Cat.java @@ -0,0 +1,34 @@ +package homework_7; + +public class Cat { + private String name; + private int age; + private double tail_length; + + public Cat(String name, int age, double tail_length) { + this.name = name; + this.age = age; + this.tail_length = tail_length; + } + + @Override + public String toString() { + return "Cat{" + + "name='" + name + '\'' + + ", age=" + age + + ", tail_length=" + tail_length + + '}'; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + public double getTail_length() { + return tail_length; + } +} diff --git a/src/main/java/homework_7/Kitten.java b/src/main/java/homework_7/Kitten.java new file mode 100644 index 00000000..1996fd51 --- /dev/null +++ b/src/main/java/homework_7/Kitten.java @@ -0,0 +1,38 @@ +package homework_7; + +public class Kitten { + private String name; + private int age; + private double tail_length; + + public Kitten(String name, int age, double tail_length) { + this.name = name; + this.age = age; + this.tail_length = tail_length; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + public double getTail_length() { + return tail_length; + } + + @Override + public String toString() { + return "Kitten{" + + "name='" + name + '\'' + + ", age=" + age + + ", tail_length=" + tail_length + + '}'; + } + + public Cat changeKittenToCat(KittenToCat kittenToCat) { + return kittenToCat.trasfom(this); + } +} diff --git a/src/main/java/homework_7/KittenToCat.java b/src/main/java/homework_7/KittenToCat.java new file mode 100644 index 00000000..e840b1af --- /dev/null +++ b/src/main/java/homework_7/KittenToCat.java @@ -0,0 +1,5 @@ +package homework_7; +@FunctionalInterface +public interface KittenToCat { + Cat trasfom(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..603c1126 --- /dev/null +++ b/src/main/java/homework_7/Main.java @@ -0,0 +1,9 @@ +package homework_7; + +public class Main { + public static void main(String[] args) { + Kitten kitten = new Kitten("murzik", 1, 1.0 ); + Cat cat = kitten.changeKittenToCat(kitten1 -> new Cat (kitten.getName(), kitten.getAge()*5, kitten.getTail_length()*2)); + System.out.println(cat); + } +} From eaba51c9e35672038d9f42dd61637a1be3e3cede Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:05:31 +0300 Subject: [PATCH 34/48] Update README.md --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 95bb2a67..43971c9e 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,21 @@ | HW4 | [Singleton homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/Singleton/MySingleton.java) | Singleton | | HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | | HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | +| HW5 | [CustomRegexMatcher homework] +(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | +The app with customRegexMatcher | +| HW5 | [PowerOfNumber homework] +(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | +The app realizes PowerOfNumber method which using recursion. | +| HW6 | [MapProblemsGenerator homework] +(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | +The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | +| HW6 | [MapProblemsGenerator homework] +(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | +The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | +| HW7 | [KittenToCatFunction homework] +(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_7/KittenToCat.java) | +This app transform Kitten to Cat | [Link to CodingBat](https://codingbat.com/done?user=kostya-ivanov9623@mail.ru&tag=8599662828) From 872a384a41c859f45528f54f4c1bd2edb9dc77c7 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:07:46 +0300 Subject: [PATCH 35/48] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 43971c9e..dfbf9063 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ | HW4 | [Singleton homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/Singleton/MySingleton.java) | Singleton | | HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | | HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | + | HW5 | [CustomRegexMatcher homework] (https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | From 2f9216ad2e334ddb01cb308186d503484986a795 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:09:41 +0300 Subject: [PATCH 36/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dfbf9063..bd652d83 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ | HW4 | [Singleton homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/Singleton/MySingleton.java) | Singleton | | HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | | HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | - +| HW4 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | | HW5 | [CustomRegexMatcher homework] (https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | From cc7d57ed08c2fc2ab047aea008c80785b4701122 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:11:36 +0300 Subject: [PATCH 37/48] Update README.md --- README.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index bd652d83..74dfdba6 100644 --- a/README.md +++ b/README.md @@ -12,21 +12,16 @@ | HW4 | [Singleton homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/Singleton/MySingleton.java) | Singleton | | HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | | HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | -| HW4 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | -| HW5 | [CustomRegexMatcher homework] -(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | +| HW5 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | +| HW5 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | -| HW5 | [PowerOfNumber homework] -(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | +| HW5 | [PowerOfNumber homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | The app realizes PowerOfNumber method which using recursion. | -| HW6 | [MapProblemsGenerator homework] -(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | +| HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | -| HW6 | [MapProblemsGenerator homework] -(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | +| HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | -| HW7 | [KittenToCatFunction homework] -(https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_7/KittenToCat.java) | +| HW7 | [KittenToCatFunction homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_7/KittenToCat.java) | This app transform Kitten to Cat | From ac5a26f0d0524ec36dabec44fba8fcf89994d5ba Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:12:49 +0300 Subject: [PATCH 38/48] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 74dfdba6..9ecd7cd2 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,6 @@ | HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | | HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | | HW5 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | -| HW5 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | -The app with customRegexMatcher | | HW5 | [PowerOfNumber homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | The app realizes PowerOfNumber method which using recursion. | | HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | From 38c1376486fc29654818ed8e839bfff031dce13a Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:13:25 +0300 Subject: [PATCH 39/48] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ecd7cd2..2d06f727 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ | HW5 | [PowerOfNumber homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | The app realizes PowerOfNumber method which using recursion. | | HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | -The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | +The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals.| | HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | | HW7 | [KittenToCatFunction homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_7/KittenToCat.java) | From 4272a70d7f9b0495eb14659ad63cb21209221f95 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:16:48 +0300 Subject: [PATCH 40/48] Update README.md --- README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2d06f727..9b581bcb 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,9 @@ | HW4 | [CustomFileReader homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_file_reader/CustomFileReader.java) | The app that reads from a file using nio io | | HW4 | [CustomAnnotation homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_4/custom_annotation/test_annotation/Main.java) | The app has three annotation, BeforeSuite, which runs once at the beginning, AfterSuite, which runs once at the end, and Test which runs methods by priority | | HW5 | [CustomRegexMatcher homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/customRegexMatcher/CustomRegexMatcher.java) | The app with customRegexMatcher | -| HW5 | [PowerOfNumber homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | -The app realizes PowerOfNumber method which using recursion. | -| HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | -The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals.| -| HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | -The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals. | -| HW7 | [KittenToCatFunction homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_7/KittenToCat.java) | -This app transform Kitten to Cat | +| HW5 | [PowerOfNumber homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_5/powerOfNumber/PowerOfNumber.java) | The app realizes PowerOfNumber method which using recursion | +| HW6 | [MapProblemsGenerator homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_6/MapProblemsCollisionGenerator.java) | The app has two classes, MapProblemsCollisionGenerator which creates 100% collision and MapProblemsMutableGenerator with hashcoreEquals | +| HW7 | [KittenToCatFunction homework](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/konstantinIvanov/src/main/java/homework_7/KittenToCat.java) | This app transform Kitten to Cat | [Link to CodingBat](https://codingbat.com/done?user=kostya-ivanov9623@mail.ru&tag=8599662828) From 73d3be494c8c573e84dcc8d1460dea8f593f9173 Mon Sep 17 00:00:00 2001 From: kostya23azaza <60847517+kostya23azaza@users.noreply.github.com> Date: Tue, 14 Sep 2021 18:16:54 +0300 Subject: [PATCH 41/48] Create README.md From a383a51ff539e21654f11278ca64fc32a8790133 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Thu, 16 Sep 2021 14:59:15 +0300 Subject: [PATCH 42/48] add course project seaBattle --- .../course_project/seaBattle/Computer.java | 22 ++++ .../java/course_project/seaBattle/Field.java | 110 ++++++++++++++++++ .../java/course_project/seaBattle/Game.java | 43 +++++++ .../java/course_project/seaBattle/Main.java | 8 ++ .../java/course_project/seaBattle/Player.java | 20 ++++ .../java/course_project/seaBattle/Ship.java | 73 ++++++++++++ 6 files changed, 276 insertions(+) create mode 100644 src/main/java/course_project/seaBattle/Computer.java create mode 100644 src/main/java/course_project/seaBattle/Field.java create mode 100644 src/main/java/course_project/seaBattle/Game.java create mode 100644 src/main/java/course_project/seaBattle/Main.java create mode 100644 src/main/java/course_project/seaBattle/Player.java create mode 100644 src/main/java/course_project/seaBattle/Ship.java diff --git a/src/main/java/course_project/seaBattle/Computer.java b/src/main/java/course_project/seaBattle/Computer.java new file mode 100644 index 00000000..d0b28a2d --- /dev/null +++ b/src/main/java/course_project/seaBattle/Computer.java @@ -0,0 +1,22 @@ +package course_project.seaBattle; + + +import java.util.Arrays; + +import static course_project.seaBattle.Field.*; + +public class Computer { + private String name; + + public String getName() { + return name; + } + + public Computer(String name) { + this.name = name; + for (int i = 0; i < computer_field.length; i++) { + Arrays.fill(computer_field[i], '*'); + Arrays.fill(fake_field[i], '*'); + } + } +} \ No newline at end of file diff --git a/src/main/java/course_project/seaBattle/Field.java b/src/main/java/course_project/seaBattle/Field.java new file mode 100644 index 00000000..d7c8af6c --- /dev/null +++ b/src/main/java/course_project/seaBattle/Field.java @@ -0,0 +1,110 @@ +package course_project.seaBattle; + +import java.util.Random; +import java.util.Scanner; + +public class Field { + public static final int SIZE = 10; + public static char[][] player_field = new char[SIZE][SIZE]; + public static char[][] computer_field = new char[SIZE][SIZE]; + public static char[][] fake_field = new char[SIZE][SIZE]; + public static int playerShip = 20; + public static int computerShip = 20; + + public static void printBattleField(char[][] field) { + for (int i = 0; i < SIZE; i++) { + if (i == 0) { + for (int k = 0; k < SIZE; k++) { + System.out.print("\t" + k); + } + System.out.println(); + } + System.out.print(i); + for (int j = 0; j < SIZE; j++) { + System.out.print("\t" + field[i][j]); + } + System.out.println(); + } + } + + public static void printAllMaps(Player user, course_project.seaBattle.Computer computer) { + System.out.print("\t=========" + user.getName() + "========"); + System.out.println("\t\t\t\t \t=======" + computer.getName() + "======="); + System.out.print(" "); + for (int i = 0; i < SIZE; i++) { + System.out.print(i + " "); + } + System.out.print("\t\t "); + for (int i = 0; i < SIZE; i++) { + System.out.print(i + " "); + } + + System.out.print("\n"); + for (int i = 0; i < 10; i++) { + System.out.print(i + " "); + for (int j = 0; j < 10; j++) { + System.out.print(player_field[i][j] + " "); + } + System.out.print("\t\t"); + System.out.print(i + " "); + for (int k = 0; k < 10; k++) { + System.out.print(computer_field[i][k] + " "); + } + System.out.print("\n"); + } + } + public static void playerShoot(Scanner scanner, char[][] field) { + while (true) { + try { + System.out.println("Print the coordinate x"); + int x = scanner.nextInt(); + System.out.println("Print the coordinate y"); + int y = scanner.nextInt(); + if (field[x][y] == 'X') { + System.out.println("GOAL"); + System.out.println("Nice shot"); + field[x][y] = '@'; + fake_field[x][y] = '@'; + computerShip--; + printBattleField(fake_field); + if (computerShip == 0) { + return; + } + } else { + System.out.println("You missed"); + field[x][y] = '-'; + fake_field[x][y] = '-'; + printBattleField(fake_field); + return; + } + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("You can use number from 0 to 9"); + break; + } catch (Exception e) { + throw new RuntimeException("Error, you must use only number"); + } + } + } + public static void computerShoot(char[][] field, Random random) { + while (true) { + int x = random.nextInt(10); + int y = random.nextInt(10); + if (field[x][y] == 'X') { + System.out.println("Computer shot your ship"); + field[x][y] = '@'; + playerShip--; + printBattleField(player_field); + if (playerShip == 0) { + return; + } + } else if (field[x][y] == '@' || field[x][y] == '-') { + + } else { + System.out.println("Computer missed"); + field[x][y] = '-'; + printBattleField(player_field); + return; + } + } + } +} diff --git a/src/main/java/course_project/seaBattle/Game.java b/src/main/java/course_project/seaBattle/Game.java new file mode 100644 index 00000000..77f79441 --- /dev/null +++ b/src/main/java/course_project/seaBattle/Game.java @@ -0,0 +1,43 @@ +package course_project.seaBattle; + + +import java.util.Random; +import java.util.Scanner; + +import static course_project.seaBattle.Field.*; +import static course_project.seaBattle.Field.computerShip; +import static course_project.seaBattle.Ship.*; + +public class Game { + Scanner scanner = new Scanner(System.in); + Random rand = new Random(); + + private static boolean checkWin(int playerShip, int computerShip) { + if (playerShip == 0) { + System.out.println("Computer win -_-"); + return false; + } else if (computerShip == 0) { + System.out.println("You win!!"); + return false; + } else { + return true; + } + } + + public void run() { + System.out.println("Print your name"); + Player User = new Player(scanner.nextLine()); + course_project.seaBattle.Computer computer = new course_project.seaBattle.Computer("Computer"); + randomGenerateShip(player_field, rand); + printAllMaps(User, computer); + randomGenerateShip(computer_field, rand); + System.out.println("Start game"); + do { + playerShoot(scanner, computer_field); + computerShoot(player_field, rand); + } + while (checkWin(playerShip, computerShip)); + System.out.println(" End "); + System.out.println("if you like this game you can buy it for three hundred bucks"); + } +} \ No newline at end of file diff --git a/src/main/java/course_project/seaBattle/Main.java b/src/main/java/course_project/seaBattle/Main.java new file mode 100644 index 00000000..7921918a --- /dev/null +++ b/src/main/java/course_project/seaBattle/Main.java @@ -0,0 +1,8 @@ +package course_project.seaBattle; + +public class Main { + + public static void main(String[] args) { + new Game().run(); + } +} diff --git a/src/main/java/course_project/seaBattle/Player.java b/src/main/java/course_project/seaBattle/Player.java new file mode 100644 index 00000000..d3f66aa9 --- /dev/null +++ b/src/main/java/course_project/seaBattle/Player.java @@ -0,0 +1,20 @@ +package course_project.seaBattle; + + +import java.util.Arrays; + +import static course_project.seaBattle.Field.*; + +public class Player { + private String name; + public String getName() { + return name; + } + + public Player(String name) { + this.name = name; + for (int i = 0; i < player_field.length; i++) { + Arrays.fill(player_field[i], '*'); + } + } +} \ No newline at end of file diff --git a/src/main/java/course_project/seaBattle/Ship.java b/src/main/java/course_project/seaBattle/Ship.java new file mode 100644 index 00000000..926e71a1 --- /dev/null +++ b/src/main/java/course_project/seaBattle/Ship.java @@ -0,0 +1,73 @@ +package course_project.seaBattle; + + +import java.util.Random; + +import static course_project.seaBattle.Field.SIZE; + +public class Ship { + int positionY; + int positionX; + int size; + boolean isVertical; + int health; + public static Ship[] ships = new Ship[10]; + + public Ship(int positionX, int positionY, int size, boolean isVertical) { + this.positionX = positionX; + this.positionY = positionY; + this.size = size; + this.isVertical = isVertical; + this.health = size; + } + + public static void randomGenerateShip(char[][] field, Random rand) { + for (int i = 0; i < 10; i++) { + boolean isShipPlaced = false; + do { + if (i == 0) ships[i] = new Ship(rand.nextInt(10), rand.nextInt(10), 4, rand.nextBoolean()); + if (i > 0 && i <= 2) + ships[i] = new Ship(rand.nextInt(10), rand.nextInt(10), 3, rand.nextBoolean()); + if (i > 2 && i <= 5) + ships[i] = new Ship(rand.nextInt(10), rand.nextInt(10), 2, rand.nextBoolean()); + if (i > 5) ships[i] = new Ship(rand.nextInt(10), rand.nextInt(10), 1, rand.nextBoolean()); + if (canSetShip(ships[i], field)) { + setShipOnField(ships[i], field); + isShipPlaced = true; + } + } while (!isShipPlaced); + } + } + private static void setShipOnField(Ship ship, char[][] field) { + if (ship.isVertical) { + for (int i = 0; i < ship.size; i++) { + field[ship.positionX][ship.positionY + i] = 'X'; + } + } else { + for (int i = 0; i < ship.size; i++) { + field[ship.positionX + i][ship.positionY] = 'X'; + } + } + } + + private static boolean canSetShip(Ship ship, char[][] field) { + if (ship.positionX < 0 || ship.positionY < 0 || SIZE <= ship.positionX || SIZE <= ship.positionY) + return false; + if (ship.isVertical && SIZE <= ship.positionY + ship.size) return false; + if (!ship.isVertical && SIZE <= ship.positionX + ship.size) return false; + int minX = Math.max(0, ship.positionX - 1); + int minY = Math.max(0, ship.positionY - 1); + int maxX = Math.min(SIZE - 1, ship.positionX + 1 + (ship.isVertical ? 0 : ship.size)); + int maxY = Math.min(SIZE - 1, ship.positionY + 1 + (ship.isVertical ? ship.size : 0)); + for (int x = minX; x <= maxX; x++) { + for (int y = minY; y <= maxY; y++) { + if (isShipPresent(x, y, field)) return false; + } + } + return true; + } + + private static boolean isShipPresent(int x, int y, char[][] field) { + return field[x][y] == 'X'; + } +} \ No newline at end of file From 9e131edd1af518c55b4ceddf9b399e514f459dcb Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 22 Sep 2021 14:50:46 +0300 Subject: [PATCH 43/48] fix bugs in homework 3 and homework 6 --- src/main/java/homework_3/Flower.java | 24 ++++++++++ src/main/java/homework_3/ImmutableClass.java | 46 ------------------- src/main/java/homework_6/Main.java | 10 ++-- .../MapProblemsCollisionGenerator.java | 15 +----- .../MapProblemsMutableGenerator.java | 23 ++-------- 5 files changed, 34 insertions(+), 84 deletions(-) create mode 100644 src/main/java/homework_3/Flower.java delete mode 100644 src/main/java/homework_3/ImmutableClass.java diff --git a/src/main/java/homework_3/Flower.java b/src/main/java/homework_3/Flower.java new file mode 100644 index 00000000..2330293d --- /dev/null +++ b/src/main/java/homework_3/Flower.java @@ -0,0 +1,24 @@ +package homework_3; + +import java.util.ArrayList; +import java.util.List; +/* +no setters methods +make variables private and final +make class final +A parameterized constructor should initialize all the fields performing a deep copy +Deep Copy of objects should be performed in the getter methods +*/public final class Flower { + private final String name; + private final List counts; + public Flower(String name, List counts) { + this.name = name; + this.counts = new ArrayList<>(counts); + } + public final String getName() { + return name; + } + public final List getCounts() { + return new ArrayList<>(counts); + } +} \ No newline at end of file diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java deleted file mode 100644 index 623a943e..00000000 --- a/src/main/java/homework_3/ImmutableClass.java +++ /dev/null @@ -1,46 +0,0 @@ -package homework_3; - -import java.util.LinkedList; -import java.util.List; - -public final class ImmutableClass { - /* - no setters methods - make variables private and final - make class final - A parameterized constructor should initialize all the fields performing a deep copy - Deep Copy of objects should be performed in the getter methods - */ - private final int someInt; - private final double someDouble; - private final String someString; - private final List list; - - public ImmutableClass(int someInt, double someDouble, String someString, List list) { - this.someInt = someInt; - this.someDouble = someDouble; - this.someString = someString; - this.list = list; - } - - public int getSomeInt() { - return someInt; - } - - public double getSomeDouble() { - return someDouble; - } - - public String getSomeString() { - return someString; - } - - public List getList() { - return new LinkedList<>(list); - } - - public ImmutableClass getNew(List list) { - return new ImmutableClass(someInt, someDouble, someString, list); - } - -} diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java index bdd62846..61950dcf 100644 --- a/src/main/java/homework_6/Main.java +++ b/src/main/java/homework_6/Main.java @@ -10,11 +10,11 @@ public static void main(String[] args) { MapProblemsCollisionGenerator o2 = new MapProblemsCollisionGenerator(3,"name"); System.out.println(o1.hashCode() == o2.hashCode()); Map map = new HashMap<>(); - MapProblemsMutableGenerator m1 = new MapProblemsMutableGenerator(1, "name"); - MapProblemsMutableGenerator same = new MapProblemsMutableGenerator(1, "name"); - MapProblemsMutableGenerator m2 = new MapProblemsMutableGenerator(2, "name2"); - MapProblemsMutableGenerator m3 = new MapProblemsMutableGenerator(3, "name3"); - MapProblemsMutableGenerator m4 = new MapProblemsMutableGenerator(4, "name4"); + MapProblemsMutableGenerator m1 = new MapProblemsMutableGenerator(1); + MapProblemsMutableGenerator same = new MapProblemsMutableGenerator(1); + MapProblemsMutableGenerator m2 = new MapProblemsMutableGenerator(2); + MapProblemsMutableGenerator m3 = new MapProblemsMutableGenerator(3); + MapProblemsMutableGenerator m4 = new MapProblemsMutableGenerator(4); map.put(m1, "1"); map.put(m2, "2"); map.put(m3, "3"); diff --git a/src/main/java/homework_6/MapProblemsCollisionGenerator.java b/src/main/java/homework_6/MapProblemsCollisionGenerator.java index 1f031352..4967ba79 100644 --- a/src/main/java/homework_6/MapProblemsCollisionGenerator.java +++ b/src/main/java/homework_6/MapProblemsCollisionGenerator.java @@ -2,8 +2,8 @@ public class MapProblemsCollisionGenerator { - private int id; - private String name; + private final int id; + private final String name; @Override public boolean equals(Object o) { @@ -18,22 +18,11 @@ public int hashCode() { return 1; } - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } public String getName() { return name; } - public void setName(String name) { - this.name = name; - } - public MapProblemsCollisionGenerator(int id, String name) { this.id = id; this.name = name; diff --git a/src/main/java/homework_6/MapProblemsMutableGenerator.java b/src/main/java/homework_6/MapProblemsMutableGenerator.java index 49d4be0a..d6b0a15c 100644 --- a/src/main/java/homework_6/MapProblemsMutableGenerator.java +++ b/src/main/java/homework_6/MapProblemsMutableGenerator.java @@ -5,40 +5,23 @@ public class MapProblemsMutableGenerator { private int id; - private String name; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MapProblemsMutableGenerator that = (MapProblemsMutableGenerator) o; - return id == that.id && Objects.equals(name, that.name); + return id == that.id; } @Override public int hashCode() { - Random random = new Random(); - return random.nextInt(Integer.MAX_VALUE); + return Objects.hash(id); } - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - public MapProblemsMutableGenerator(int id, String name) { + public MapProblemsMutableGenerator(int id) { this.id = id; - this.name = name; } } From a3ed72de0e2e964d6d920b08d76af8843245b1e5 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 22 Sep 2021 15:08:27 +0300 Subject: [PATCH 44/48] fix bugs in homework 6 and in test for homework 2 --- src/main/java/homework_3/Flower.java | 1 + src/main/java/homework_6/Main.java | 29 ------------------- .../MapProblemsCollisionGenerator.java | 1 + .../MapProblemsMutableGenerator.java | 2 +- src/main/java/homework_7/Kitten.java | 2 +- src/main/java/homework_7/KittenToCat.java | 2 +- src/main/java/homework_7/Main.java | 1 + .../java/homework_2/RandomCharsTableTest.java | 10 ++++--- 8 files changed, 12 insertions(+), 36 deletions(-) delete mode 100644 src/main/java/homework_6/Main.java diff --git a/src/main/java/homework_3/Flower.java b/src/main/java/homework_3/Flower.java index 2330293d..8942a7f6 100644 --- a/src/main/java/homework_3/Flower.java +++ b/src/main/java/homework_3/Flower.java @@ -9,6 +9,7 @@ make class final A parameterized constructor should initialize all the fields performing a deep copy Deep Copy of objects should be performed in the getter methods */public final class Flower { + private final String name; private final List counts; public Flower(String name, List counts) { diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java deleted file mode 100644 index 61950dcf..00000000 --- a/src/main/java/homework_6/Main.java +++ /dev/null @@ -1,29 +0,0 @@ -package homework_6; - -import java.util.HashMap; -import java.util.Map; - -public class Main { - - public static void main(String[] args) { - MapProblemsCollisionGenerator o1 = new MapProblemsCollisionGenerator(2,"name"); - MapProblemsCollisionGenerator o2 = new MapProblemsCollisionGenerator(3,"name"); - System.out.println(o1.hashCode() == o2.hashCode()); - Map map = new HashMap<>(); - MapProblemsMutableGenerator m1 = new MapProblemsMutableGenerator(1); - MapProblemsMutableGenerator same = new MapProblemsMutableGenerator(1); - MapProblemsMutableGenerator m2 = new MapProblemsMutableGenerator(2); - MapProblemsMutableGenerator m3 = new MapProblemsMutableGenerator(3); - MapProblemsMutableGenerator m4 = new MapProblemsMutableGenerator(4); - map.put(m1, "1"); - map.put(m2, "2"); - map.put(m3, "3"); - map.put(m4, "4"); - System.out.println(m1.equals(same)); - System.out.println("Trying to get any value by key"); - map.get(m1); - map.get(m2); - map.get(m3); - map.get(m4); - } -} diff --git a/src/main/java/homework_6/MapProblemsCollisionGenerator.java b/src/main/java/homework_6/MapProblemsCollisionGenerator.java index 4967ba79..3ebd0c86 100644 --- a/src/main/java/homework_6/MapProblemsCollisionGenerator.java +++ b/src/main/java/homework_6/MapProblemsCollisionGenerator.java @@ -2,6 +2,7 @@ public class MapProblemsCollisionGenerator { + private final int id; private final String name; diff --git a/src/main/java/homework_6/MapProblemsMutableGenerator.java b/src/main/java/homework_6/MapProblemsMutableGenerator.java index d6b0a15c..77e37078 100644 --- a/src/main/java/homework_6/MapProblemsMutableGenerator.java +++ b/src/main/java/homework_6/MapProblemsMutableGenerator.java @@ -1,9 +1,9 @@ package homework_6; import java.util.Objects; -import java.util.Random; public class MapProblemsMutableGenerator { + private int id; @Override diff --git a/src/main/java/homework_7/Kitten.java b/src/main/java/homework_7/Kitten.java index 1996fd51..9b3417ee 100644 --- a/src/main/java/homework_7/Kitten.java +++ b/src/main/java/homework_7/Kitten.java @@ -32,7 +32,7 @@ public String toString() { '}'; } - public Cat changeKittenToCat(KittenToCat kittenToCat) { + public Cat changeKittenToCat(KittenToCat kittenToCat) { return kittenToCat.trasfom(this); } } diff --git a/src/main/java/homework_7/KittenToCat.java b/src/main/java/homework_7/KittenToCat.java index e840b1af..645d0325 100644 --- a/src/main/java/homework_7/KittenToCat.java +++ b/src/main/java/homework_7/KittenToCat.java @@ -1,5 +1,5 @@ package homework_7; @FunctionalInterface -public interface KittenToCat { +public interface KittenToCat { Cat trasfom(Kitten kitten); } diff --git a/src/main/java/homework_7/Main.java b/src/main/java/homework_7/Main.java index 603c1126..b759dd9b 100644 --- a/src/main/java/homework_7/Main.java +++ b/src/main/java/homework_7/Main.java @@ -1,6 +1,7 @@ package homework_7; public class Main { + public static void main(String[] args) { Kitten kitten = new Kitten("murzik", 1, 1.0 ); Cat cat = kitten.changeKittenToCat(kitten1 -> new Cat (kitten.getName(), kitten.getAge()*5, kitten.getTail_length()*2)); diff --git a/src/test/java/homework_2/RandomCharsTableTest.java b/src/test/java/homework_2/RandomCharsTableTest.java index 4ab9a4ac..8968eaf6 100644 --- a/src/test/java/homework_2/RandomCharsTableTest.java +++ b/src/test/java/homework_2/RandomCharsTableTest.java @@ -12,26 +12,28 @@ public void testOnZeroArg() { setInput("0 0 even"); new RandomCharsTable().run(); printOut(); - assertEquals("Use number bigger than one", getOutputLines()[0]); + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } @Test public void testOnEvenOrOddArg() { setInput("3 2 notEven"); new RandomCharsTable().run(); printOut(); - assertEquals("After two number you should print even or odd", getOutputLines()[0]); + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } @Test public void testOnEmptyArg() { setInput(""); - assertThrows(NullPointerException.class, ()-> new RandomCharsTable().run()); + new RandomCharsTable().run(); + + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } @Test public void testOnNegativeArg() { setInput("-10 -6 even"); new RandomCharsTable().run(); printOut(); - assertEquals("Use number bigger than one", getOutputLines()[0]); + assertEquals("Passed parameters should match the format [positive integer] [positive integer] [even|odd]", getOutputLines()[0]); } } From 3b99362a871232bb82a8928aa21daa3c881cab14 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Wed, 22 Sep 2021 17:57:41 +0300 Subject: [PATCH 45/48] add test for seaBattle --- .../java/course_project/seaBattle/Game.java | 2 +- src/test/java/course_project/Main.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/test/java/course_project/Main.java diff --git a/src/main/java/course_project/seaBattle/Game.java b/src/main/java/course_project/seaBattle/Game.java index 77f79441..8b2fd33f 100644 --- a/src/main/java/course_project/seaBattle/Game.java +++ b/src/main/java/course_project/seaBattle/Game.java @@ -12,7 +12,7 @@ public class Game { Scanner scanner = new Scanner(System.in); Random rand = new Random(); - private static boolean checkWin(int playerShip, int computerShip) { + public static boolean checkWin(int playerShip, int computerShip) { if (playerShip == 0) { System.out.println("Computer win -_-"); return false; diff --git a/src/test/java/course_project/Main.java b/src/test/java/course_project/Main.java new file mode 100644 index 00000000..2a92e8d8 --- /dev/null +++ b/src/test/java/course_project/Main.java @@ -0,0 +1,32 @@ +package course_project; + +import base.UnitBase; +import org.junit.jupiter.api.Test; + + +import static course_project.seaBattle.Game.checkWin; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + + +public class Main extends UnitBase { + + @Test + public void testChechWinMethod1() { + assertTrue(checkWin(20,20)); + } + @Test + public void testChechWinMethod2() { + assertFalse(checkWin(0,0)); + } + @Test + public void testChechWinMethod3() { + assertTrue(checkWin(10,3)); + } + + @Test + public void testChechWinMethod4() { + assertFalse(checkWin(0,3)); + } + +} From 9b54d7814f9b07e237e2586439d3ba19b5e9ed37 Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Fri, 24 Sep 2021 12:56:35 +0300 Subject: [PATCH 46/48] fix homework 3 --- src/main/java/homework_3/Flower.java | 25 --------- src/main/java/homework_3/ImmutableClass.java | 56 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 25 deletions(-) delete mode 100644 src/main/java/homework_3/Flower.java create mode 100644 src/main/java/homework_3/ImmutableClass.java diff --git a/src/main/java/homework_3/Flower.java b/src/main/java/homework_3/Flower.java deleted file mode 100644 index 8942a7f6..00000000 --- a/src/main/java/homework_3/Flower.java +++ /dev/null @@ -1,25 +0,0 @@ -package homework_3; - -import java.util.ArrayList; -import java.util.List; -/* -no setters methods -make variables private and final -make class final -A parameterized constructor should initialize all the fields performing a deep copy -Deep Copy of objects should be performed in the getter methods -*/public final class Flower { - - private final String name; - private final List counts; - public Flower(String name, List counts) { - this.name = name; - this.counts = new ArrayList<>(counts); - } - public final String getName() { - return name; - } - public final List getCounts() { - return new ArrayList<>(counts); - } -} \ No newline at end of file diff --git a/src/main/java/homework_3/ImmutableClass.java b/src/main/java/homework_3/ImmutableClass.java new file mode 100644 index 00000000..1e2c40ac --- /dev/null +++ b/src/main/java/homework_3/ImmutableClass.java @@ -0,0 +1,56 @@ +package homework_3; + +import java.util.ArrayList; +import java.util.List; +/* +no setters methods +make variables private and final +make class final +A parameterized constructor should initialize all the fields performing a deep copy +Deep Copy of objects should be performed in the getter methods +*/public final class ImmutableClass { + + private final int someInt; + private final String someString; + private final Character someChar; + private final String[] names; + + public ImmutableClass(int someInt, String someString, Character someChar, String[] names) { + this.someInt = someInt; + this.someString = someString; + this.someChar = someChar; + this.names = names; + } + + public int getSomeInt() { + return someInt; + } + + public String getSomeString() { + return someString; + } + + public Character getSomeChar() { + return someChar; + } + + public String[] getNames() { + return names.clone(); + } + + public ImmutableClass getImmutableClass(int someInt) { + return new ImmutableClass(getSomeInt(),getSomeString(),getSomeChar(), getNames()); + } + + public ImmutableClass getImmutableClass(Character cshar) { + if (someChar != null) { + return new ImmutableClass(getSomeInt(),getSomeString(), cshar, getNames()); + } else return new ImmutableClass(getSomeInt(),getSomeString(),getSomeChar(), getNames()); + } + + public ImmutableClass getImmutableClass(String[] str) { + if (str != null) { + return new ImmutableClass(getSomeInt(),getSomeString(),getSomeChar(), str); + } else return new ImmutableClass(getSomeInt(),getSomeString(),getSomeChar(), getNames()); + } +} \ No newline at end of file From f0bbc5fb49a1f7ccbe3fc2444c5e8759d78b463e Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Fri, 24 Sep 2021 12:58:43 +0300 Subject: [PATCH 47/48] fix homework 6 --- .../homework_6/MapProblemsMutableGenerator.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/homework_6/MapProblemsMutableGenerator.java b/src/main/java/homework_6/MapProblemsMutableGenerator.java index 77e37078..f5bcfbe9 100644 --- a/src/main/java/homework_6/MapProblemsMutableGenerator.java +++ b/src/main/java/homework_6/MapProblemsMutableGenerator.java @@ -24,4 +24,19 @@ public int hashCode() { public MapProblemsMutableGenerator(int id) { this.id = id; } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @Override + public String toString() { + return "MapProblemsMutableGenerator{" + + "id=" + id + + '}'; + } } From ee58141affaa6435fc1956152a7b2bf31285818c Mon Sep 17 00:00:00 2001 From: Konstantin Ivanov Date: Fri, 24 Sep 2021 13:03:12 +0300 Subject: [PATCH 48/48] fix homework 7 and junit test in homework 2 PyramidPrinterTest --- src/main/java/homework_6/Main.java | 17 +++++++++++++++++ src/main/java/homework_7/Main.java | 4 +++- .../java/homework_2/PyramidPrinterTest.java | 8 ++++---- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 src/main/java/homework_6/Main.java diff --git a/src/main/java/homework_6/Main.java b/src/main/java/homework_6/Main.java new file mode 100644 index 00000000..fef24520 --- /dev/null +++ b/src/main/java/homework_6/Main.java @@ -0,0 +1,17 @@ +package homework_6; + +import java.util.HashMap; + +public class Main { + + public static void main(String[] args) { + HashMap myMap = new HashMap<>(); + MapProblemsMutableGenerator mutab = new MapProblemsMutableGenerator(1); + + myMap.put(mutab, 100); + System.out.println(myMap.get(mutab)); + + mutab.setId(3); + System.out.println(myMap.get(mutab)); + } +} diff --git a/src/main/java/homework_7/Main.java b/src/main/java/homework_7/Main.java index b759dd9b..9ad8ca2b 100644 --- a/src/main/java/homework_7/Main.java +++ b/src/main/java/homework_7/Main.java @@ -4,7 +4,9 @@ public class Main { public static void main(String[] args) { Kitten kitten = new Kitten("murzik", 1, 1.0 ); - Cat cat = kitten.changeKittenToCat(kitten1 -> new Cat (kitten.getName(), kitten.getAge()*5, kitten.getTail_length()*2)); + Kitten kitten1 = new Kitten("sadCat", 12, 2.3); + Cat cat = kitten.changeKittenToCat(kit -> new Cat (kitten.getName(), kitten.getAge()*5, kitten.getTail_length()*2)); + Cat cat2 = kitten.changeKittenToCat(kit -> new Cat (kitten1.getName(), kitten1.getAge()*5, kitten1.getTail_length()*2)); System.out.println(cat); } } diff --git a/src/test/java/homework_2/PyramidPrinterTest.java b/src/test/java/homework_2/PyramidPrinterTest.java index 6a010e9a..1232072e 100644 --- a/src/test/java/homework_2/PyramidPrinterTest.java +++ b/src/test/java/homework_2/PyramidPrinterTest.java @@ -39,7 +39,7 @@ public void testPyramidWithStringArg() { new PyramidPrinter().run(); printOut(); removeFromOutput("Введите данные:"); - assertEquals("Only integer!", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @Test @@ -48,7 +48,7 @@ public void testPyramidWithNegativeNumberArg() { new PyramidPrinter().run(); printOut(); removeFromOutput("Введите данные:"); - assertEquals("Use positive number", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @Test public void testPyramidWithDoubleArg() { @@ -56,7 +56,7 @@ public void testPyramidWithDoubleArg() { new PyramidPrinter().run(); printOut(); removeFromOutput("Введите данные:"); - assertEquals("Only integer!", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } @Test public void testPyramidWithoutArg() { @@ -64,7 +64,7 @@ public void testPyramidWithoutArg() { new PyramidPrinter().run(); printOut(); removeFromOutput("Введите данные:"); - assertEquals("Only integer!", getOutputLines()[0]); + assertEquals("Only 1 non-negative integer is allowed as passed parameter", getOutputLines()[0]); } }