From 98fb73da4939373ccdde27066681d45819ee0803 Mon Sep 17 00:00:00 2001 From: Daisy Date: Mon, 12 Jul 2021 19:24:53 +0300 Subject: [PATCH 01/24] Update homework1 --- src/main/java/homework1/Main.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/homework1/Main.java diff --git a/src/main/java/homework1/Main.java b/src/main/java/homework1/Main.java new file mode 100644 index 00000000..95088755 --- /dev/null +++ b/src/main/java/homework1/Main.java @@ -0,0 +1,13 @@ +package homework1; + +public class Main { + + public static String wordAndNumber (String word){ + + if (word.equals("ошибка")) { + return "\u001b[31m" + " ТРЕВОГА"; + } else return word + ": " + word.length(); + + } + +} From 5ca1c5e13787ed88d0b5a7ab0f9149638bda1e08 Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Mon, 12 Jul 2021 20:01:28 +0300 Subject: [PATCH 02/24] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d686e9f..04a570da 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # Java Core June 2021 -## *Nikolaev Artem* +## *Skorodnikova Margarita* | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/master/src/main/java/homework_1) | The app that reads input arguments and prints them, until "error" argument | +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/homework1) | The app that reads input arguments and prints them, until "error" argument | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From e8dd4be4edbcc27343f9c86be065f43ba5af429b Mon Sep 17 00:00:00 2001 From: Daisy Date: Wed, 14 Jul 2021 04:08:17 +0300 Subject: [PATCH 03/24] Homework 1 corrected --- src/main/java/homework1/Main.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/homework1/Main.java b/src/main/java/homework1/Main.java index 95088755..d11f0257 100644 --- a/src/main/java/homework1/Main.java +++ b/src/main/java/homework1/Main.java @@ -1,13 +1,24 @@ package homework1; public class Main { + static String word; + + public static String wordAndNumberOfLetters(String word) { - public static String wordAndNumber (String word){ if (word.equals("ошибка")) { - return "\u001b[31m" + " ТРЕВОГА"; - } else return word + ": " + word.length(); + return "\u001b[31m" + " ТРЕВОГА"; + + } else if (!word.equals("ошибка")) { + return word + ": " + word.length() + " letters."; + + //added closing String + } else return ""; + } + // added psvm + public static void main(String[] args) { + System.out.println(wordAndNumberOfLetters(word)); } } From a5ef4bc891cbc7fec94c74dcf396e524e84d1200 Mon Sep 17 00:00:00 2001 From: Daisy Date: Fri, 16 Jul 2021 04:11:50 +0300 Subject: [PATCH 04/24] Homework 1 corrected once more --- src/main/java/homework1/Main.java | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/main/java/homework1/Main.java b/src/main/java/homework1/Main.java index d11f0257..a8997ba3 100644 --- a/src/main/java/homework1/Main.java +++ b/src/main/java/homework1/Main.java @@ -1,24 +1,17 @@ package homework1; public class Main { - static String word; - public static String wordAndNumberOfLetters(String word) { - - - if (word.equals("ошибка")) { - return "\u001b[31m" + " ТРЕВОГА"; + public static void main(String[] args) { - } else if (!word.equals("ошибка")) { - return word + ": " + word.length() + " letters."; + for (String s : args) { + if (s.equals("ошибка")) { + System.out.println("\u001b[31m" + " ТРЕВОГА"); + break; - //added closing String - } else return ""; + } else { + System.out.println(s + ": " + s.length() + " letters."); + } + } } - - // added psvm - public static void main(String[] args) { - System.out.println(wordAndNumberOfLetters(word)); - } - } From c3f0fa26647fe99a933cf89364670187363f9321 Mon Sep 17 00:00:00 2001 From: Daisy Date: Fri, 16 Jul 2021 18:58:58 +0300 Subject: [PATCH 05/24] Homework 1 corrected and configurations changed --- src/main/java/Homework1/Main.java | 2 ++ src/main/java/homework1/Main.java | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 src/main/java/Homework1/Main.java diff --git a/src/main/java/Homework1/Main.java b/src/main/java/Homework1/Main.java new file mode 100644 index 00000000..b501fd53 --- /dev/null +++ b/src/main/java/Homework1/Main.java @@ -0,0 +1,2 @@ +package Homework1;public class Main { +} diff --git a/src/main/java/homework1/Main.java b/src/main/java/homework1/Main.java index a8997ba3..14d2c10a 100644 --- a/src/main/java/homework1/Main.java +++ b/src/main/java/homework1/Main.java @@ -1,12 +1,11 @@ -package homework1; +package Homework1; public class Main { - public static void main(String[] args) { for (String s : args) { - if (s.equals("ошибка")) { - System.out.println("\u001b[31m" + " ТРЕВОГА"); + if (s.equals("error")) { + System.out.println("\u001b[31m" + "ALARM"); break; } else { @@ -15,3 +14,4 @@ public static void main(String[] args) { } } } + From 6216411b30c2372e74ffbc78553f7ec3062d33ee Mon Sep 17 00:00:00 2001 From: Daisy Date: Sat, 17 Jul 2021 12:31:44 +0300 Subject: [PATCH 06/24] Added closing color string --- src/main/java/Homework1/Main.java | 19 ++++++++++++++++++- src/main/java/homework1/Main.java | 17 ----------------- 2 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 src/main/java/homework1/Main.java diff --git a/src/main/java/Homework1/Main.java b/src/main/java/Homework1/Main.java index b501fd53..dc0d254b 100644 --- a/src/main/java/Homework1/Main.java +++ b/src/main/java/Homework1/Main.java @@ -1,2 +1,19 @@ -package Homework1;public class Main { +package Homework1; + +public class Main { + public static void main(String[] args) { + final String RED_COLOR = "\u001b[31m"; + final String CLOSE_COLOR = "\u001B[0m"; + + for (String s : args) { + if (s.equals("error")) { + System.out.println(RED_COLOR + "ALARM" + CLOSE_COLOR); + break; + + } else { + System.out.println(s + ": " + s.length() + " letters."); + } + } + } } + diff --git a/src/main/java/homework1/Main.java b/src/main/java/homework1/Main.java deleted file mode 100644 index 14d2c10a..00000000 --- a/src/main/java/homework1/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package Homework1; - -public class Main { - public static void main(String[] args) { - - for (String s : args) { - if (s.equals("error")) { - System.out.println("\u001b[31m" + "ALARM"); - break; - - } else { - System.out.println(s + ": " + s.length() + " letters."); - } - } - } -} - From 961574fc0a598de5861bbe6dc1f6fb9bb00c825e Mon Sep 17 00:00:00 2001 From: Daisy Date: Sat, 17 Jul 2021 19:58:04 +0300 Subject: [PATCH 07/24] Homework2 Traffic Light --- src/main/java/Homework2/TrafficLight.java | 46 +++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main/java/Homework2/TrafficLight.java diff --git a/src/main/java/Homework2/TrafficLight.java b/src/main/java/Homework2/TrafficLight.java new file mode 100644 index 00000000..2ec5075d --- /dev/null +++ b/src/main/java/Homework2/TrafficLight.java @@ -0,0 +1,46 @@ +package Homework2; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class TrafficLight { + + public static void main(String[] args) { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + + + while (true) { + int input = 0; + + try { + input = Integer.parseInt(reader.readLine()); + } catch (IOException e) { + e.printStackTrace(); + } catch (NumberFormatException e) { + System.out.println("Input does not contain numbers"); + continue; + } + + if (input < 0) { + System.out.println("Error. You can't enter negative numbers"); + continue; + + } else if (input > 86399) { + System.out.println("Error. The day has come to an end"); + continue; + } + + int lightInterval = input % 60; + if (lightInterval >= 0 && lightInterval < 35) { + System.out.println("Green"); + } else if (lightInterval >= 35 && lightInterval < 40) { + System.out.println("Yellow"); + } else if (lightInterval >= 40 && lightInterval < 55) { + System.out.println("Red"); + } else if (lightInterval >= 55 && lightInterval < 60) { + System.out.println("Yellow"); + } + } + } +} From 673a19b1a077b76381091242da7ada0f40aa3891 Mon Sep 17 00:00:00 2001 From: Daisy Date: Sun, 18 Jul 2021 03:51:40 +0300 Subject: [PATCH 08/24] Homework2 Pyramid Printer --- src/main/java/Homework2_1/PyramidPrinter.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/Homework2_1/PyramidPrinter.java diff --git a/src/main/java/Homework2_1/PyramidPrinter.java b/src/main/java/Homework2_1/PyramidPrinter.java new file mode 100644 index 00000000..ab038fd7 --- /dev/null +++ b/src/main/java/Homework2_1/PyramidPrinter.java @@ -0,0 +1,41 @@ +package Homework2_1; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class PyramidPrinter { + public static int size; + public static final char X = 'x'; + public static final char SPACE = ' '; + + public static void main(String[] args) { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + try { + size = Integer.parseInt(reader.readLine()); + } catch (IOException e) { + e.printStackTrace(); + } + + char[][] twoDimArray = new char[size][size]; + + + if (size == 0) { + return; + } else { + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { + if (i < j) { + twoDimArray[i][j] = SPACE; + } else { + twoDimArray[i][j] = X; + } + } + } + + } + for (char[] c : twoDimArray) { + System.out.println(c); + } + } +} From 9564874b76441bac5cbabd3822a10e08a82c9168 Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Sun, 18 Jul 2021 03:59:53 +0300 Subject: [PATCH 09/24] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 04a570da..4a81eae4 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,7 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/homework1) | The app that reads input arguments and prints them, until "error" argument | +| HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2/TrafficLight.java) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | +| HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2_1/PyramidPrinter.java) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 10c934c5b6c23670ad1954f9d1b5a777ecccf4f3 Mon Sep 17 00:00:00 2001 From: Daisy Date: Tue, 20 Jul 2021 23:40:49 +0300 Subject: [PATCH 10/24] Cnanged the project structure --- .../Pyramid_Printer}/PyramidPrinter.java | 2 +- .../Random_Chars_Table/RandomCharsTable.java | 49 +++++++++++++++++++ .../{ => Traffic_Light}/TrafficLight.java | 2 +- 3 files changed, 51 insertions(+), 2 deletions(-) rename src/main/java/{Homework2_1 => Homework2/Pyramid_Printer}/PyramidPrinter.java (96%) create mode 100644 src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java rename src/main/java/Homework2/{ => Traffic_Light}/TrafficLight.java (97%) diff --git a/src/main/java/Homework2_1/PyramidPrinter.java b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java similarity index 96% rename from src/main/java/Homework2_1/PyramidPrinter.java rename to src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java index ab038fd7..ef63144a 100644 --- a/src/main/java/Homework2_1/PyramidPrinter.java +++ b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java @@ -1,4 +1,4 @@ -package Homework2_1; +package Homework2.Pyramid_Printer; import java.io.BufferedReader; import java.io.IOException; diff --git a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java new file mode 100644 index 00000000..f901447e --- /dev/null +++ b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java @@ -0,0 +1,49 @@ +package Homework2.Random_Chars_Table; +/* +Создать приложение "RandomCharsTable" + +Считывает 2 числа и строку - длину и ширину таблицы/двумерного массива, +и стратегию (even или odd). +Печатает таблицу, заполненную случайно сгенерированными буквами от A до Z. + +Печатает в одну строку, через запятую, все четные или нечетные буквы в таблице +в зависимости от выбранной стратегии (A = 65, B = 66 и т.д.) + +AC: +input - 2 2 even, output - + | A | E | + | G | D | + Even letters - G, D +input - 2 3 odd, output - + | L | P | X | + | S | N | Q | + Odd letters - S, Q + */ + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class RandomCharsTable { + + public char randomChar (int min, int max) { + min = 65; + max = 90; + max -= min; + + char randomCh = (char) ((int) (Math.random() * ++max) + min); + + return randomCh; + + } + public static void main(String[] args) { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + try { + Integer.parseInt(reader.readLine()); + } catch (IOException e) { + + } + + } + +} diff --git a/src/main/java/Homework2/TrafficLight.java b/src/main/java/Homework2/Traffic_Light/TrafficLight.java similarity index 97% rename from src/main/java/Homework2/TrafficLight.java rename to src/main/java/Homework2/Traffic_Light/TrafficLight.java index 2ec5075d..1c4ed415 100644 --- a/src/main/java/Homework2/TrafficLight.java +++ b/src/main/java/Homework2/Traffic_Light/TrafficLight.java @@ -1,4 +1,4 @@ -package Homework2; +package Homework2.Traffic_Light; import java.io.BufferedReader; import java.io.IOException; From 1fab9589a9d8ce67c9c1fb3660f8ff1b7d1a0592 Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Sun, 25 Jul 2021 22:30:49 +0300 Subject: [PATCH 11/24] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4a81eae4..bac08cca 100644 --- a/README.md +++ b/README.md @@ -9,3 +9,5 @@ | HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2_1/PyramidPrinter.java) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) + +[My CodingBat Page](https://codingbat.com/done?user=la.reine.m@gmail.com&tag=831576932) From bf4876b6ec4efbb341a3c624d53d725ccdd05c64 Mon Sep 17 00:00:00 2001 From: Daisy Date: Sun, 25 Jul 2021 23:25:42 +0300 Subject: [PATCH 12/24] Changed the project structure, divided the projects into classes. --- .../java/Homework2/Pyramid_Printer/Main.java | 23 +++++++ .../Pyramid_Printer/PyramidPrinter.java | 41 ++++-------- .../java/Homework2/Traffic_Light/Main.java | 23 +++++++ .../Homework2/Traffic_Light/TrafficLight.java | 66 +++++++++---------- 4 files changed, 88 insertions(+), 65 deletions(-) create mode 100644 src/main/java/Homework2/Pyramid_Printer/Main.java create mode 100644 src/main/java/Homework2/Traffic_Light/Main.java diff --git a/src/main/java/Homework2/Pyramid_Printer/Main.java b/src/main/java/Homework2/Pyramid_Printer/Main.java new file mode 100644 index 00000000..129856f7 --- /dev/null +++ b/src/main/java/Homework2/Pyramid_Printer/Main.java @@ -0,0 +1,23 @@ +package Homework2.Pyramid_Printer; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) { + int size = 0; + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + try { + size = Integer.parseInt(reader.readLine()); + } catch (IOException e) { + e.printStackTrace(); + } + char[][] pyramidArray = pyramidPrinter.getPyramidArray(size); + + for (char[] c : pyramidArray) { + System.out.println(c); + } + } +} diff --git a/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java index ef63144a..b4bd2a13 100644 --- a/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java +++ b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java @@ -1,41 +1,24 @@ package Homework2.Pyramid_Printer; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - public class PyramidPrinter { - public static int size; public static final char X = 'x'; public static final char SPACE = ' '; - public static void main(String[] args) { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - try { - size = Integer.parseInt(reader.readLine()); - } catch (IOException e) { - e.printStackTrace(); - } - - char[][] twoDimArray = new char[size][size]; + public char[][] getPyramidArray(int size) { + char pyramid[][] = new char[size][size]; - - if (size == 0) { - return; - } else { - for (int i = 0; i < size; i++) { - for (int j = 0; j < size; j++) { - if (i < j) { - twoDimArray[i][j] = SPACE; - } else { - twoDimArray[i][j] = X; - } + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { + if (i < j) { + pyramid[i][j] = SPACE; + } else { + pyramid[i][j] = X; } } - - } - for (char[] c : twoDimArray) { - System.out.println(c); } + return pyramid; } } + + + diff --git a/src/main/java/Homework2/Traffic_Light/Main.java b/src/main/java/Homework2/Traffic_Light/Main.java new file mode 100644 index 00000000..c8d441cc --- /dev/null +++ b/src/main/java/Homework2/Traffic_Light/Main.java @@ -0,0 +1,23 @@ +package Homework2.Traffic_Light; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) { + TrafficLight trafficLight = new TrafficLight(); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int input = 0; + try { + input = Integer.parseInt(reader.readLine()); + } catch (IOException e) { + e.printStackTrace(); + } catch (NumberFormatException e) { + System.out.println("Input does not contain numbers"); + + } + trafficLight.getTrafficLight(input); + + } +} diff --git a/src/main/java/Homework2/Traffic_Light/TrafficLight.java b/src/main/java/Homework2/Traffic_Light/TrafficLight.java index 1c4ed415..fc7eb2f8 100644 --- a/src/main/java/Homework2/Traffic_Light/TrafficLight.java +++ b/src/main/java/Homework2/Traffic_Light/TrafficLight.java @@ -5,42 +5,36 @@ import java.io.InputStreamReader; public class TrafficLight { + final int END_OF_THE_DAY = 86399; + + TrafficLight getTrafficLight (int input){ + TrafficLight trafficLight = new TrafficLight(); + + if (input < 0) { + System.out.println("Error. You can't enter negative numbers"); + + } else if (input > END_OF_THE_DAY) { + System.out.println("Error. The day has come to an end"); - public static void main(String[] args) { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - - - while (true) { - int input = 0; - - try { - input = Integer.parseInt(reader.readLine()); - } catch (IOException e) { - e.printStackTrace(); - } catch (NumberFormatException e) { - System.out.println("Input does not contain numbers"); - continue; - } - - if (input < 0) { - System.out.println("Error. You can't enter negative numbers"); - continue; - - } else if (input > 86399) { - System.out.println("Error. The day has come to an end"); - continue; - } - - int lightInterval = input % 60; - if (lightInterval >= 0 && lightInterval < 35) { - System.out.println("Green"); - } else if (lightInterval >= 35 && lightInterval < 40) { - System.out.println("Yellow"); - } else if (lightInterval >= 40 && lightInterval < 55) { - System.out.println("Red"); - } else if (lightInterval >= 55 && lightInterval < 60) { - System.out.println("Yellow"); - } } + int lightInterval = input % 60; + + if (lightInterval >= 0 && lightInterval < 35) { + System.out.println("Green"); + } else if (lightInterval >= 35 && lightInterval < 40) { + System.out.println("Yellow"); + } else if (lightInterval >= 40 && lightInterval < 55) { + System.out.println("Red"); + } else if (lightInterval >= 55 && lightInterval < 60) { + System.out.println("Yellow"); + } + return trafficLight; + } + + + + + + + } -} From 0b97364861006c174949ce85c66388420966cfe4 Mon Sep 17 00:00:00 2001 From: Daisy Date: Mon, 26 Jul 2021 02:07:30 +0300 Subject: [PATCH 13/24] Makes and prints the table --- .../Homework2/Random_Chars_Table/Main.java | 51 +++++++++++++++++++ .../Random_Chars_Table/RandomCharsTable.java | 22 ++++---- 2 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 src/main/java/Homework2/Random_Chars_Table/Main.java diff --git a/src/main/java/Homework2/Random_Chars_Table/Main.java b/src/main/java/Homework2/Random_Chars_Table/Main.java new file mode 100644 index 00000000..9bd39f40 --- /dev/null +++ b/src/main/java/Homework2/Random_Chars_Table/Main.java @@ -0,0 +1,51 @@ +package Homework2.Random_Chars_Table; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main { + public static void main(String[] args) throws IOException { + int length = 0; + int height = 0; + String strategy = ""; + + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + String input = reader.readLine(); + if (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven")) { + String[] split = input.split(" "); + length = Integer.parseInt(split[0]); + height = Integer.parseInt(split[1]); + strategy = split[2]; + } else { + System.out.println("The input line does not match the pattern"); + } + + RandomCharsTable randomCharsTable = new RandomCharsTable(); + char[][] randomCharTable = randomCharsTable.getRandomCharTable(length, height); + for (char[] c : randomCharTable) { + System.out.println(c); +// if (strategy.equals("odd")) { +// { +// for (int i = 0; i < length; i++) { +// for (int j = 0; j < height; j++) { +// if (randomCharTable[i][j] % 2 != 0) { +// System.out.println("Odd letters - " + randomCharTable[i][j] + ", "); +// } +// } +// } +// } +// +// } else if (strategy.equals("even")) { +// for (int i = 0; i < length; i++) { +// for (int j = 0; j < height; j++) { +// if (randomCharTable[i][j] % 2 == 0) { +// System.out.println("Odd letters - " + randomCharTable[i][j] + ", "); +// } +// } +// } +// } + } + } + +} diff --git a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java index f901447e..5655155d 100644 --- a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java @@ -20,13 +20,9 @@ Odd letters - S, Q */ -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - public class RandomCharsTable { - public char randomChar (int min, int max) { + static char randomChar (int min, int max) { min = 65; max = 90; max -= min; @@ -34,15 +30,19 @@ public char randomChar (int min, int max) { char randomCh = (char) ((int) (Math.random() * ++max) + min); return randomCh; - } - public static void main(String[] args) { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - try { - Integer.parseInt(reader.readLine()); - } catch (IOException e) { + char [][] getRandomCharTable (int length, int height){ + char [][] randomCharTable = new char[length][height]; + for (int i = 0; i < length; i++) { + for (int j = 0; j < height; j++) { + char ch = randomChar(65, 90); + randomCharTable[i][j] = ch; + } } + return randomCharTable; + } + public void printRandomChartable(char getRand){ } From 28f56f967352cc70a161291678fd317d2a17a7e9 Mon Sep 17 00:00:00 2001 From: Daisy Date: Mon, 26 Jul 2021 04:08:14 +0300 Subject: [PATCH 14/24] Makes and prints the table, calculates odds and evens. Misprints yet --- .../Homework2/Random_Chars_Table/Main.java | 68 +++++++++++-------- .../Random_Chars_Table/RandomCharsTable.java | 32 +++++---- 2 files changed, 58 insertions(+), 42 deletions(-) diff --git a/src/main/java/Homework2/Random_Chars_Table/Main.java b/src/main/java/Homework2/Random_Chars_Table/Main.java index 9bd39f40..7c014e87 100644 --- a/src/main/java/Homework2/Random_Chars_Table/Main.java +++ b/src/main/java/Homework2/Random_Chars_Table/Main.java @@ -4,15 +4,18 @@ import java.io.IOException; import java.io.InputStreamReader; + public class Main { + static int length = 0; + static int height = 0; + public static void main(String[] args) throws IOException { - int length = 0; - int height = 0; String strategy = ""; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String input = reader.readLine(); - if (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven")) { + if (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven") + && height >= 0 && length >= 0) { String[] split = input.split(" "); length = Integer.parseInt(split[0]); height = Integer.parseInt(split[1]); @@ -20,32 +23,43 @@ public static void main(String[] args) throws IOException { } else { System.out.println("The input line does not match the pattern"); } - + StringBuilder builder = new StringBuilder(); RandomCharsTable randomCharsTable = new RandomCharsTable(); - char[][] randomCharTable = randomCharsTable.getRandomCharTable(length, height); - for (char[] c : randomCharTable) { - System.out.println(c); -// if (strategy.equals("odd")) { -// { -// for (int i = 0; i < length; i++) { -// for (int j = 0; j < height; j++) { -// if (randomCharTable[i][j] % 2 != 0) { -// System.out.println("Odd letters - " + randomCharTable[i][j] + ", "); -// } -// } -// } -// } -// -// } else if (strategy.equals("even")) { -// for (int i = 0; i < length; i++) { -// for (int j = 0; j < height; j++) { -// if (randomCharTable[i][j] % 2 == 0) { -// System.out.println("Odd letters - " + randomCharTable[i][j] + ", "); -// } -// } -// } -// } + char[][] rCT = RandomCharsTable.getRandomCharsTable(length, height); + + for (char[] ch : rCT) { + builder.append("| "); + for (char c : ch) { + builder.append(c).append(" | "); + } + builder.append("\n"); + } + System.out.println(builder.toString()); + + if(strategy.equals("odd")){ + builder.append("Odd letters - "); + for (int i = 0; i < length; i++){ + for (int j = 0; j < height; j++){ + if (rCT[i][j]% 2 != 0){ + builder.append(rCT[i][j]).append(" "); + } + } + } + } + System.out.println(builder.toString()); + + if (strategy.equals("even")){ + builder.append("Even letters - "); + for (int i = 0; i < length; i++){ + for (int j = 0; j < height; j++){ + if (rCT[i][j] % 2 == 0) { + builder.append(rCT[i][j]).append(" "); + } + } + } + } + System.out.println(builder.toString()); } } diff --git a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java index 5655155d..3022c303 100644 --- a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java @@ -1,49 +1,51 @@ package Homework2.Random_Chars_Table; /* -Создать приложение "RandomCharsTable" - -Считывает 2 числа и строку - длину и ширину таблицы/двумерного массива, -и стратегию (even или odd). +3) Создать приложение "RandomCharsTable" +Считывает один раз, в одну строчку 2 числа и строку - длину и ширину таблицы/двумерного массива, +и стратегию (even или odd) Печатает таблицу, заполненную случайно сгенерированными буквами от A до Z. - -Печатает в одну строку, через запятую, все четные или нечетные буквы в таблице -в зависимости от выбранной стратегии (A = 65, B = 66 и т.д.) - +Печатает в одну строку, через запятую, все четные или нечетные буквы в таблице в зависимости +от выбранной стратегии (A = 65, B = 66 и т.д.) AC: + input - 2 2 even, output - | A | E | | G | D | Even letters - G, D + input - 2 3 odd, output - | L | P | X | | S | N | Q | Odd letters - S, Q +Любая ошибка с некорректным вводом/0 на месте длины_ширины/числом параметров: +output - Passed parameters should match the format [positive integer] [positive integer] [even|odd] +Доп. функционал можно сделать выбором мода при старте приложения (через args) */ public class RandomCharsTable { - static char randomChar (int min, int max) { + //получаю случайные числа + static char getRandomChar(int min, int max) { min = 65; max = 90; max -= min; - char randomCh = (char) ((int) (Math.random() * ++max) + min); - return randomCh; } - char [][] getRandomCharTable (int length, int height){ + //складываю случайые числа в массив + public static char [][] getRandomCharsTable(int length, int height){ char [][] randomCharTable = new char[length][height]; for (int i = 0; i < length; i++) { for (int j = 0; j < height; j++) { - char ch = randomChar(65, 90); + char ch = getRandomChar(65, 90); randomCharTable[i][j] = ch; } } return randomCharTable; } - public void printRandomChartable(char getRand){ - } } + + From 743d12e318e3b40f2d615c834dadf7c7ace3dd87 Mon Sep 17 00:00:00 2001 From: Daisy Date: Tue, 3 Aug 2021 01:26:03 +0300 Subject: [PATCH 15/24] Added the run() method to each class, finished the Random Chars Table --- .../java/Homework2/Pyramid_Printer/Main.java | 18 +-- .../Pyramid_Printer/PyramidPrinter.java | 24 ++++ .../Homework2/Random_Chars_Table/Main.java | 56 +--------- .../Random_Chars_Table/RandomCharsTable.java | 105 +++++++++++++----- .../java/Homework2/Traffic_Light/Main.java | 19 +--- .../Homework2/Traffic_Light/TrafficLight.java | 19 +++- .../Pyramid_Printer/PyramidPrinterTest.java | 33 ++++++ .../RandomCharsTableTest.java | 24 ++++ .../Traffic_Light/TrafficLightTest.java | 16 +++ 9 files changed, 196 insertions(+), 118 deletions(-) create mode 100644 src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java create mode 100644 src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java create mode 100644 src/test/java/Homework2/Traffic_Light/TrafficLightTest.java diff --git a/src/main/java/Homework2/Pyramid_Printer/Main.java b/src/main/java/Homework2/Pyramid_Printer/Main.java index 129856f7..7ec88e9f 100644 --- a/src/main/java/Homework2/Pyramid_Printer/Main.java +++ b/src/main/java/Homework2/Pyramid_Printer/Main.java @@ -1,23 +1,7 @@ package Homework2.Pyramid_Printer; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - public class Main { public static void main(String[] args) { - int size = 0; - PyramidPrinter pyramidPrinter = new PyramidPrinter(); - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - try { - size = Integer.parseInt(reader.readLine()); - } catch (IOException e) { - e.printStackTrace(); - } - char[][] pyramidArray = pyramidPrinter.getPyramidArray(size); - - for (char[] c : pyramidArray) { - System.out.println(c); - } + new PyramidPrinter().run(); } } diff --git a/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java index b4bd2a13..4366dd22 100644 --- a/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java +++ b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java @@ -1,5 +1,9 @@ package Homework2.Pyramid_Printer; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + public class PyramidPrinter { public static final char X = 'x'; public static final char SPACE = ' '; @@ -18,6 +22,26 @@ public char[][] getPyramidArray(int size) { } return pyramid; } + + public void run (){ + int size = 0; + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + try(reader){ + size = Integer.parseInt(reader.readLine()); + } catch (IOException e) { + System.out.println("Some problem with input stream: " + e.getMessage()); + throw new RuntimeException(); + } catch (NumberFormatException e){ + System.out.println("The line you entered is not valid"); + throw new RuntimeException(); + } + + char[][] pyramidArray = getPyramidArray(size); + + for (char[] c : pyramidArray) { + System.out.println(c); + } + } } diff --git a/src/main/java/Homework2/Random_Chars_Table/Main.java b/src/main/java/Homework2/Random_Chars_Table/Main.java index 7c014e87..ea513385 100644 --- a/src/main/java/Homework2/Random_Chars_Table/Main.java +++ b/src/main/java/Homework2/Random_Chars_Table/Main.java @@ -1,65 +1,11 @@ package Homework2.Random_Chars_Table; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStreamReader; - public class Main { - static int length = 0; - static int height = 0; public static void main(String[] args) throws IOException { - String strategy = ""; - - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - String input = reader.readLine(); - if (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven") - && height >= 0 && length >= 0) { - String[] split = input.split(" "); - length = Integer.parseInt(split[0]); - height = Integer.parseInt(split[1]); - strategy = split[2]; - } else { - System.out.println("The input line does not match the pattern"); - } - StringBuilder builder = new StringBuilder(); - RandomCharsTable randomCharsTable = new RandomCharsTable(); - char[][] rCT = RandomCharsTable.getRandomCharsTable(length, height); - - for (char[] ch : rCT) { - builder.append("| "); - for (char c : ch) { - builder.append(c).append(" | "); - } - builder.append("\n"); - } - System.out.println(builder.toString()); - if(strategy.equals("odd")){ - builder.append("Odd letters - "); - for (int i = 0; i < length; i++){ - for (int j = 0; j < height; j++){ - if (rCT[i][j]% 2 != 0){ - builder.append(rCT[i][j]).append(" "); - } - } - } - } - System.out.println(builder.toString()); - - if (strategy.equals("even")){ - builder.append("Even letters - "); - for (int i = 0; i < length; i++){ - for (int j = 0; j < height; j++){ - if (rCT[i][j] % 2 == 0) { - builder.append(rCT[i][j]).append(" "); - } - } - } - - } - System.out.println(builder.toString()); + new RandomCharsTable().run(); } - } diff --git a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java index 3022c303..9d2fa3c1 100644 --- a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java @@ -1,28 +1,13 @@ package Homework2.Random_Chars_Table; -/* -3) Создать приложение "RandomCharsTable" -Считывает один раз, в одну строчку 2 числа и строку - длину и ширину таблицы/двумерного массива, -и стратегию (even или odd) -Печатает таблицу, заполненную случайно сгенерированными буквами от A до Z. -Печатает в одну строку, через запятую, все четные или нечетные буквы в таблице в зависимости -от выбранной стратегии (A = 65, B = 66 и т.д.) -AC: - -input - 2 2 even, output - - | A | E | - | G | D | - Even letters - G, D - -input - 2 3 odd, output - - | L | P | X | - | S | N | Q | - Odd letters - S, Q -Любая ошибка с некорректным вводом/0 на месте длины_ширины/числом параметров: -output - Passed parameters should match the format [positive integer] [positive integer] [even|odd] -Доп. функционал можно сделать выбором мода при старте приложения (через args) - */ + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; public class RandomCharsTable { + int length = 0; + int height = 0; + String input = ""; //получаю случайные числа static char getRandomChar(int min, int max) { @@ -33,18 +18,84 @@ static char getRandomChar(int min, int max) { return randomCh; } - //складываю случайые числа в массив - public static char [][] getRandomCharsTable(int length, int height){ - char [][] randomCharTable = new char[length][height]; + //складываю случайые числа в массив и делаю из них буквы + public static char[][] getRandomCharsTable(int length, int height) { + char[][] randomCharTable = new char[length][height]; for (int i = 0; i < length; i++) { for (int j = 0; j < height; j++) { - char ch = getRandomChar(65, 90); - randomCharTable[i][j] = ch; + char ch = getRandomChar(65, 90); + randomCharTable[i][j] = ch; } } return randomCharTable; } + public boolean isValid() { + + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + try (reader) { + input = reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + if (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven") + && height >= 0 && length >= 0) { + return true; + } else + + return false; + } + + //вся движуха с проверкой стратегии и чёт/нечёт + public void run() { + String strategy = ""; + if (!isValid()) { + System.out.println("The line you entered does not fit the pattern"); + } else { + String[] split = input.split(" "); + length = Integer.parseInt(split[0]); + height = Integer.parseInt(split[1]); + strategy = split[2]; + } + + StringBuilder buildTable = new StringBuilder(); + + char[][] rCT = RandomCharsTable.getRandomCharsTable(length, height); + + for (char[] ch : rCT) { + buildTable.append("| "); + for (char c : ch) { + buildTable.append(c).append(" | "); + } + buildTable.append("\n"); + } + System.out.println(buildTable.toString()); + + StringBuilder buildResult = new StringBuilder(); + if (strategy.equals("odd")) { + buildResult.append("Odd letters - "); + for (int i = 0; i < length; i++) { + for (int j = 0; j < height; j++) { + if (rCT[i][j] % 2 == 1) { + buildResult.append(rCT[i][j]).append(" "); + } + } + } + } + System.out.println(buildResult.toString()); + + if (strategy.equals("even")) { + buildResult.append("Even letters - "); + for (int i = 0; i < length; i++) { + for (int j = 0; j < height; j++) { + if (rCT[i][j] % 2 == 0) { + buildResult.append(rCT[i][j]).append(" "); + } + } + } + } + System.out.println(buildResult.toString()); + } } diff --git a/src/main/java/Homework2/Traffic_Light/Main.java b/src/main/java/Homework2/Traffic_Light/Main.java index c8d441cc..a158d1b2 100644 --- a/src/main/java/Homework2/Traffic_Light/Main.java +++ b/src/main/java/Homework2/Traffic_Light/Main.java @@ -1,23 +1,8 @@ package Homework2.Traffic_Light; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - public class Main { - public static void main(String[] args) { - TrafficLight trafficLight = new TrafficLight(); - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - int input = 0; - try { - input = Integer.parseInt(reader.readLine()); - } catch (IOException e) { - e.printStackTrace(); - } catch (NumberFormatException e) { - System.out.println("Input does not contain numbers"); - - } - trafficLight.getTrafficLight(input); + public static void main(String[] args) { + new TrafficLight().run(); } } diff --git a/src/main/java/Homework2/Traffic_Light/TrafficLight.java b/src/main/java/Homework2/Traffic_Light/TrafficLight.java index fc7eb2f8..4c73d614 100644 --- a/src/main/java/Homework2/Traffic_Light/TrafficLight.java +++ b/src/main/java/Homework2/Traffic_Light/TrafficLight.java @@ -7,7 +7,7 @@ public class TrafficLight { final int END_OF_THE_DAY = 86399; - TrafficLight getTrafficLight (int input){ + TrafficLight getTrafficLight(int input) { TrafficLight trafficLight = new TrafficLight(); if (input < 0) { @@ -17,6 +17,7 @@ TrafficLight getTrafficLight (int input){ System.out.println("Error. The day has come to an end"); } + int lightInterval = input % 60; if (lightInterval >= 0 && lightInterval < 35) { @@ -31,10 +32,24 @@ TrafficLight getTrafficLight (int input){ return trafficLight; } + public void run() { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + int input = 0; + try (reader) { + input = Integer.parseInt(reader.readLine()); + } catch (IOException e) { + e.printStackTrace(); + } catch (NumberFormatException e) { + System.out.println("Input does not contain numbers"); + } + getTrafficLight(input); + } +} + + - } diff --git a/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java b/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java new file mode 100644 index 00000000..02db9e4d --- /dev/null +++ b/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java @@ -0,0 +1,33 @@ +package Homework2.Pyramid_Printer; + +import base.UnitBase; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class PyramidPrinterTest extends UnitBase { + + @Test + void testGetPyramidArray() { + PyramidPrinter pyramidPrinter = new PyramidPrinter(); + char[][] actual = pyramidPrinter.getPyramidArray(5); + char [][] expected = new char[][] { + {'x', ' ', ' ', ' ', ' '}, + {'x', 'x', ' ', ' ', ' '}, + {'x', 'x', 'x', ' ', ' '}, + {'x', 'x', 'x', 'x', ' '}, + {'x', 'x', 'x', 'x', 'x'}, + }; + assertArrayEquals(expected, actual); + } + @Test + void example() { + setInput("2"); + + new PyramidPrinter().run(); + printOut(); + removeFromOutput("Please input number"); + + assertEquals("x", getOutputLines()[0]); + assertEquals("xx", getOutputLines()[1]); + } +} \ No newline at end of file diff --git a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java new file mode 100644 index 00000000..daade0fc --- /dev/null +++ b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java @@ -0,0 +1,24 @@ +package Homework2.Random_Chars_Table; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class RandomCharsTableTest { + + @Test + void getRandomChar() { + } + + @Test + void getRandomCharsTable() { + } + + @Test + void isValid() { + } + + @Test + void run() { + } +} \ No newline at end of file diff --git a/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java b/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java new file mode 100644 index 00000000..8b56c73d --- /dev/null +++ b/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java @@ -0,0 +1,16 @@ +package Homework2.Traffic_Light; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class TrafficLightTest { + + @Test + void getTrafficLight() { + } + + @Test + void run() { + } +} \ No newline at end of file From f1449cc4e24e1be9a21982ab550ec698b64636ce Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Tue, 3 Aug 2021 01:31:04 +0300 Subject: [PATCH 16/24] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bac08cca..d3798e9f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/homework1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2/TrafficLight.java) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | | HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2_1/PyramidPrinter.java) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | +| HW3 | [Random Characters Table and Counter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Random_Chars_Table) | The app that reads input lines, defines the strategy, prints a table of random chars and calculates odd and even ones | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 73b32100625d424966392703d32f71832106de13 Mon Sep 17 00:00:00 2001 From: Daisy Date: Sat, 14 Aug 2021 10:39:41 +0300 Subject: [PATCH 17/24] Added the run() method to each class, finished the Random Chars Table --- build.gradle | 3 + .../Pyramid_Printer/PyramidPrinter.java | 5 +- .../Random_Chars_Table/RandomCharsTable.java | 54 ++++++++------- .../Homework3/Immutable_Class_Task/Car.java | 65 +++++++++++++++++++ .../Immutable_Class_Task/CarShop.java | 7 ++ .../Immutable_Class_Task/Student.java | 60 +++++++++++++++++ .../Pyramid_Printer/PyramidPrinterTest.java | 34 ++++++---- .../RandomCharsTableTest.java | 10 ++- .../Traffic_Light/TrafficLightTest.java | 18 ++++- 9 files changed, 215 insertions(+), 41 deletions(-) create mode 100644 src/main/java/Homework3/Immutable_Class_Task/Car.java create mode 100644 src/main/java/Homework3/Immutable_Class_Task/CarShop.java create mode 100644 src/main/java/Homework3/Immutable_Class_Task/Student.java diff --git a/build.gradle b/build.gradle index b91dc843..0a2bd8cf 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,9 @@ repositories { dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' + // https://mvnrepository.com/artifact/org.projectlombok/lombok + compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20' + } test { diff --git a/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java index 4366dd22..f47e8856 100644 --- a/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java +++ b/src/main/java/Homework2/Pyramid_Printer/PyramidPrinter.java @@ -30,10 +30,10 @@ public void run (){ size = Integer.parseInt(reader.readLine()); } catch (IOException e) { System.out.println("Some problem with input stream: " + e.getMessage()); - throw new RuntimeException(); + return; } catch (NumberFormatException e){ System.out.println("The line you entered is not valid"); - throw new RuntimeException(); + return; } char[][] pyramidArray = getPyramidArray(size); @@ -42,6 +42,7 @@ public void run (){ System.out.println(c); } } + } diff --git a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java index 9d2fa3c1..02cf93c5 100644 --- a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java @@ -3,22 +3,19 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.util.Scanner; public class RandomCharsTable { int length = 0; int height = 0; String input = ""; - //получаю случайные числа static char getRandomChar(int min, int max) { - min = 65; - max = 90; max -= min; char randomCh = (char) ((int) (Math.random() * ++max) + min); return randomCh; } - //складываю случайые числа в массив и делаю из них буквы public static char[][] getRandomCharsTable(int length, int height) { char[][] randomCharTable = new char[length][height]; for (int i = 0; i < length; i++) { @@ -30,26 +27,19 @@ public static char[][] getRandomCharsTable(int length, int height) { return randomCharTable; } - public boolean isValid() { + private boolean isValid(String input) { + return (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven") + && height >= 0 && length >= 0); - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - try (reader) { - input = reader.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - if (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven") - && height >= 0 && length >= 0) { - return true; - } else - - return false; } - //вся движуха с проверкой стратегии и чёт/нечёт + public void run() { String strategy = ""; - if (!isValid()) { + Scanner scanner = new Scanner(System.in); + input = scanner.nextLine(); + + if (!isValid(input)) { System.out.println("The line you entered does not fit the pattern"); } else { String[] split = input.split(" "); @@ -59,8 +49,7 @@ public void run() { } StringBuilder buildTable = new StringBuilder(); - - char[][] rCT = RandomCharsTable.getRandomCharsTable(length, height); + char[][] rCT = getRandomCharsTable(length, height); for (char[] ch : rCT) { buildTable.append("| "); @@ -69,7 +58,7 @@ public void run() { } buildTable.append("\n"); } - System.out.println(buildTable.toString()); + System.out.println(buildTable); StringBuilder buildResult = new StringBuilder(); if (strategy.equals("odd")) { @@ -82,7 +71,6 @@ public void run() { } } } - System.out.println(buildResult.toString()); if (strategy.equals("even")) { buildResult.append("Even letters - "); @@ -97,6 +85,26 @@ public void run() { System.out.println(buildResult.toString()); } +// private String getResult(String strategy, char[][] rCT) { +// StringBuilder buildResult = new StringBuilder(); +// String result = ""; +// +// for (int i = 0; i < length; i++) { +// for (int j = 0; j < height; j++) { +// if (rCT[i][j] % 2 == 0 && strategy.equals("odd")) { +// buildResult.append("Odd letters - "); +// buildResult.append(rCT[i][j]).append(" "); +// result = buildResult.toString(); +// } else { +// buildResult.append("Even letters - "); +// buildResult.append(rCT[i][j]).append(" "); +// result = buildResult.toString(); +// } +// } +// } return result; +// +// } } + diff --git a/src/main/java/Homework3/Immutable_Class_Task/Car.java b/src/main/java/Homework3/Immutable_Class_Task/Car.java new file mode 100644 index 00000000..a1a29f86 --- /dev/null +++ b/src/main/java/Homework3/Immutable_Class_Task/Car.java @@ -0,0 +1,65 @@ +package Homework3.Immutable_Class_Task; +/* +Requirements for immutable classes +1. The class must be declared as final/ + +2.Fields in the class must be declared as private + +3.Data members in the class must be declared as final +(So that we can’t change the value of it after object creation) + +4. A parameterized constructor should initialize all the fields performing a deep copy +(So that data members can’t be modified with object reference) +5.Deep Copy of objects should be performed in the getter methods +(To return a copy rather than returning the actual object reference) + +6. No setters + */ + +public class Car { + private int carID; + private int engine; + private int numberOfPreviosOwners; + private String make; + private String ownerName; + + public int getCarID() { + return carID; + } + + public void setCarID(int carID) { + this.carID = carID; + } + + public int getEngine() { + return engine; + } + + public void setEngine(int engine) { + this.engine = engine; + } + + public int getNumberOfPreviosOwners() { + return numberOfPreviosOwners; + } + + public void setNumberOfPreviosOwners(int numberOfPreviosOwners) { + this.numberOfPreviosOwners = numberOfPreviosOwners; + } + + public String getMake() { + return make; + } + + public void setMake(String make) { + this.make = make; + } + + public String getOwnerName() { + return ownerName; + } + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } +} diff --git a/src/main/java/Homework3/Immutable_Class_Task/CarShop.java b/src/main/java/Homework3/Immutable_Class_Task/CarShop.java new file mode 100644 index 00000000..e2a61b65 --- /dev/null +++ b/src/main/java/Homework3/Immutable_Class_Task/CarShop.java @@ -0,0 +1,7 @@ +package Homework3.Immutable_Class_Task; + +//public final class CarShop { +// private final int orderID; +// private final String buyerName; +// private final int price; +//} diff --git a/src/main/java/Homework3/Immutable_Class_Task/Student.java b/src/main/java/Homework3/Immutable_Class_Task/Student.java new file mode 100644 index 00000000..ab3e5ba5 --- /dev/null +++ b/src/main/java/Homework3/Immutable_Class_Task/Student.java @@ -0,0 +1,60 @@ +package Homework3.Immutable_Class_Task; +import java.util.HashMap; +import java.util.Map; + +public final class Student { + private final String name; + private final int regNo; + private final Map metadata; + + public Student(String name, int regNo, + Map metadata) + { + this.name = name; + this.regNo = regNo; + Map tempMap = new HashMap<>(); + for (Map.Entry entry : + metadata.entrySet()) { + tempMap.put(entry.getKey(), entry.getValue()); + } + this.metadata = tempMap; + } + + public String getName() { return name; } + + public int getRegNo() { return regNo; } + + public Map getMetadata() + { + Map tempMap = new HashMap<>(); + for (Map.Entry entry : + this.metadata.entrySet()) { + tempMap.put(entry.getKey(), entry.getValue()); + } + return tempMap; + } + } + + // Driver class + class Test { + public static void main(String[] args) + { + Map map = new HashMap<>(); + map.put("1", "first"); + map.put("2", "second"); + Student s = new Student("ABC", 101, map); + System.out.println(s.getName()); + System.out.println(s.getRegNo()); + System.out.println(s.getMetadata()); + + // Uncommenting below line causes error + // s.regNo = 102; + + map.put("3", "third"); + System.out.println(s.getMetadata()); // Remains unchanged due to deep copy in constructor + + s.getMetadata().put("4", "fourth"); + System.out.println(s.getMetadata()); // Remains unchanged due to deep copy in getter + } + } + diff --git a/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java b/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java index 02db9e4d..d5c968ac 100644 --- a/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java +++ b/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java @@ -1,16 +1,24 @@ package Homework2.Pyramid_Printer; import base.UnitBase; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.*; class PyramidPrinterTest extends UnitBase { + static PyramidPrinter pyramidPrinter; + + @BeforeAll + static void init() { + pyramidPrinter = new PyramidPrinter(); + } + @Test - void testGetPyramidArray() { - PyramidPrinter pyramidPrinter = new PyramidPrinter(); + public void testGetPyramidArray5() { char[][] actual = pyramidPrinter.getPyramidArray(5); - char [][] expected = new char[][] { + char[][] expected = new char[][]{ {'x', ' ', ' ', ' ', ' '}, {'x', 'x', ' ', ' ', ' '}, {'x', 'x', 'x', ' ', ' '}, @@ -19,15 +27,17 @@ void testGetPyramidArray() { }; assertArrayEquals(expected, actual); } - @Test - void example() { - setInput("2"); - new PyramidPrinter().run(); - printOut(); - removeFromOutput("Please input number"); + @Test + public void testGetPyramidArray1() { + char[][] actual = pyramidPrinter.getPyramidArray(1); + char[][] expected = new char[][]{{'x'}}; + } + + @Test + public void testPyramidArrayWithException() { + setInput("qwery"); + assertDoesNotThrow(() -> pyramidPrinter.run()); + } - assertEquals("x", getOutputLines()[0]); - assertEquals("xx", getOutputLines()[1]); - } } \ No newline at end of file diff --git a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java index daade0fc..dcd176a4 100644 --- a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java +++ b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java @@ -1,10 +1,18 @@ package Homework2.Random_Chars_Table; +import base.UnitBase; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; -class RandomCharsTableTest { +class RandomCharsTableTest extends UnitBase { + static RandomCharsTable randomCharsTable; + + @BeforeAll + public void init(){ + randomCharsTable = new RandomCharsTable(); + } @Test void getRandomChar() { diff --git a/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java b/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java index 8b56c73d..9357860c 100644 --- a/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java +++ b/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java @@ -1,16 +1,28 @@ package Homework2.Traffic_Light; +import base.UnitBase; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; -class TrafficLightTest { +class TrafficLightTest extends UnitBase { + static TrafficLight trafficLight; + + @BeforeAll + public void init(){ + trafficLight = new TrafficLight(); + } @Test - void getTrafficLight() { + void getTrafficLightTest() { + trafficLight.getTrafficLight(0); + + } + @Test - void run() { + void runTest() { } } \ No newline at end of file From 005a25bfe2e3873904a1c702ffce6ce8d5fbf736 Mon Sep 17 00:00:00 2001 From: Daisy Date: Mon, 30 Aug 2021 02:59:38 +0300 Subject: [PATCH 18/24] Added Tests for all apps completed the Immutable class task --- .../Random_Chars_Table/RandomCharsTable.java | 72 ++++++------------- .../Homework2/Traffic_Light/TrafficLight.java | 27 +++---- .../Homework3/Immutable_Class_Task/Car.java | 65 ----------------- .../Immutable_Class_Task/CarShop.java | 7 -- .../{Student.java => Employee.java} | 36 ++++++---- .../Pyramid_Printer/PyramidPrinterTest.java | 17 +++++ .../RandomCharsTableTest.java | 41 +++++++++-- .../Traffic_Light/TrafficLightTest.java | 46 ++++++++++-- 8 files changed, 152 insertions(+), 159 deletions(-) delete mode 100644 src/main/java/Homework3/Immutable_Class_Task/Car.java delete mode 100644 src/main/java/Homework3/Immutable_Class_Task/CarShop.java rename src/main/java/Homework3/Immutable_Class_Task/{Student.java => Employee.java} (63%) diff --git a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java index 02cf93c5..4cf4f13c 100644 --- a/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java +++ b/src/main/java/Homework2/Random_Chars_Table/RandomCharsTable.java @@ -1,8 +1,5 @@ package Homework2.Random_Chars_Table; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; import java.util.Scanner; public class RandomCharsTable { @@ -30,19 +27,37 @@ public static char[][] getRandomCharsTable(int length, int height) { private boolean isValid(String input) { return (input.matches("\\d+\\s\\d+\\sodd") || input.matches("\\d+\\s\\d+\\seven") && height >= 0 && length >= 0); - } + public String getResult(String strategy, char[][] rCT) { + StringBuilder buildResult = new StringBuilder(); + buildResult.append(strategy) + .append(" letters -"); + + boolean strategyOdd = strategy.equals("odd"); + + for (int i = 0; i < length; i++) { + for (int j = 0; j < height; j++) { + boolean isOdd = rCT[i][j] % 2 == 1; + + if ((!strategyOdd && !isOdd) || (strategyOdd && isOdd)) { + buildResult.append(' ') + .append(rCT[i][j]); + } + } + } + return buildResult.toString(); + } public void run() { - String strategy = ""; + String strategy; Scanner scanner = new Scanner(System.in); input = scanner.nextLine(); if (!isValid(input)) { - System.out.println("The line you entered does not fit the pattern"); + throw new IllegalArgumentException("The line you entered does not fit the pattern"); } else { - String[] split = input.split(" "); + String[] split = input.split("\\s"); length = Integer.parseInt(split[0]); height = Integer.parseInt(split[1]); strategy = split[2]; @@ -60,50 +75,9 @@ public void run() { } System.out.println(buildTable); - StringBuilder buildResult = new StringBuilder(); - if (strategy.equals("odd")) { - buildResult.append("Odd letters - "); - for (int i = 0; i < length; i++) { - for (int j = 0; j < height; j++) { - if (rCT[i][j] % 2 == 1) { - buildResult.append(rCT[i][j]).append(" "); - } - } - } - } - - if (strategy.equals("even")) { - buildResult.append("Even letters - "); - for (int i = 0; i < length; i++) { - for (int j = 0; j < height; j++) { - if (rCT[i][j] % 2 == 0) { - buildResult.append(rCT[i][j]).append(" "); - } - } - } - } - System.out.println(buildResult.toString()); + System.out.println(getResult(strategy, rCT)); } -// private String getResult(String strategy, char[][] rCT) { -// StringBuilder buildResult = new StringBuilder(); -// String result = ""; -// -// for (int i = 0; i < length; i++) { -// for (int j = 0; j < height; j++) { -// if (rCT[i][j] % 2 == 0 && strategy.equals("odd")) { -// buildResult.append("Odd letters - "); -// buildResult.append(rCT[i][j]).append(" "); -// result = buildResult.toString(); -// } else { -// buildResult.append("Even letters - "); -// buildResult.append(rCT[i][j]).append(" "); -// result = buildResult.toString(); -// } -// } -// } return result; -// -// } } diff --git a/src/main/java/Homework2/Traffic_Light/TrafficLight.java b/src/main/java/Homework2/Traffic_Light/TrafficLight.java index 4c73d614..84f1455c 100644 --- a/src/main/java/Homework2/Traffic_Light/TrafficLight.java +++ b/src/main/java/Homework2/Traffic_Light/TrafficLight.java @@ -7,42 +7,37 @@ public class TrafficLight { final int END_OF_THE_DAY = 86399; - TrafficLight getTrafficLight(int input) { - TrafficLight trafficLight = new TrafficLight(); - + String getTrafficLight(int input) { if (input < 0) { - System.out.println("Error. You can't enter negative numbers"); + throw new IllegalArgumentException("Error. You can't enter negative numbers"); } else if (input > END_OF_THE_DAY) { - System.out.println("Error. The day has come to an end"); - + throw new IllegalArgumentException("Error. The day has come to an end"); } - int lightInterval = input % 60; - + String light = ""; if (lightInterval >= 0 && lightInterval < 35) { - System.out.println("Green"); + light = "Green"; } else if (lightInterval >= 35 && lightInterval < 40) { - System.out.println("Yellow"); + light = "Yellow"; } else if (lightInterval >= 40 && lightInterval < 55) { - System.out.println("Red"); + light = "Red"; } else if (lightInterval >= 55 && lightInterval < 60) { - System.out.println("Yellow"); + light = "Yellow"; } - return trafficLight; + return light; } public void run() { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int input = 0; - try (reader) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { input = Integer.parseInt(reader.readLine()); } catch (IOException e) { e.printStackTrace(); } catch (NumberFormatException e) { System.out.println("Input does not contain numbers"); } - getTrafficLight(input); + System.out.println(getTrafficLight(input)); } } diff --git a/src/main/java/Homework3/Immutable_Class_Task/Car.java b/src/main/java/Homework3/Immutable_Class_Task/Car.java deleted file mode 100644 index a1a29f86..00000000 --- a/src/main/java/Homework3/Immutable_Class_Task/Car.java +++ /dev/null @@ -1,65 +0,0 @@ -package Homework3.Immutable_Class_Task; -/* -Requirements for immutable classes -1. The class must be declared as final/ - -2.Fields in the class must be declared as private - -3.Data members in the class must be declared as final -(So that we can’t change the value of it after object creation) - -4. A parameterized constructor should initialize all the fields performing a deep copy -(So that data members can’t be modified with object reference) -5.Deep Copy of objects should be performed in the getter methods -(To return a copy rather than returning the actual object reference) - -6. No setters - */ - -public class Car { - private int carID; - private int engine; - private int numberOfPreviosOwners; - private String make; - private String ownerName; - - public int getCarID() { - return carID; - } - - public void setCarID(int carID) { - this.carID = carID; - } - - public int getEngine() { - return engine; - } - - public void setEngine(int engine) { - this.engine = engine; - } - - public int getNumberOfPreviosOwners() { - return numberOfPreviosOwners; - } - - public void setNumberOfPreviosOwners(int numberOfPreviosOwners) { - this.numberOfPreviosOwners = numberOfPreviosOwners; - } - - public String getMake() { - return make; - } - - public void setMake(String make) { - this.make = make; - } - - public String getOwnerName() { - return ownerName; - } - - public void setOwnerName(String ownerName) { - this.ownerName = ownerName; - } -} diff --git a/src/main/java/Homework3/Immutable_Class_Task/CarShop.java b/src/main/java/Homework3/Immutable_Class_Task/CarShop.java deleted file mode 100644 index e2a61b65..00000000 --- a/src/main/java/Homework3/Immutable_Class_Task/CarShop.java +++ /dev/null @@ -1,7 +0,0 @@ -package Homework3.Immutable_Class_Task; - -//public final class CarShop { -// private final int orderID; -// private final String buyerName; -// private final int price; -//} diff --git a/src/main/java/Homework3/Immutable_Class_Task/Student.java b/src/main/java/Homework3/Immutable_Class_Task/Employee.java similarity index 63% rename from src/main/java/Homework3/Immutable_Class_Task/Student.java rename to src/main/java/Homework3/Immutable_Class_Task/Employee.java index ab3e5ba5..a9fbba85 100644 --- a/src/main/java/Homework3/Immutable_Class_Task/Student.java +++ b/src/main/java/Homework3/Immutable_Class_Task/Employee.java @@ -2,13 +2,30 @@ import java.util.HashMap; import java.util.Map; -public final class Student { +/* +Requirements for immutable classes +1. The class must be declared as final/ + +2.Fields in the class must be declared as private + +3.Data members in the class must be declared as final +(So that we can’t change the value of it after object creation) + +4. A parameterized constructor should initialize all the fields performing a deep copy +(So that data members can’t be modified with object reference) +5.Deep Copy of objects should be performed in the getter methods +(To return a copy rather than returning the actual object reference) + +6. No setters + */ + +public final class Employee { private final String name; private final int regNo; private final Map metadata; - public Student(String name, int regNo, - Map metadata) + public Employee(String name, int regNo, + Map metadata) { this.name = name; this.regNo = regNo; @@ -35,26 +52,19 @@ public Map getMetadata() } } - // Driver class - class Test { + + class Main { public static void main(String[] args) { Map map = new HashMap<>(); map.put("1", "first"); map.put("2", "second"); - Student s = new Student("ABC", 101, map); + Employee s = new Employee("ABC", 101, map); System.out.println(s.getName()); System.out.println(s.getRegNo()); System.out.println(s.getMetadata()); - // Uncommenting below line causes error - // s.regNo = 102; - - map.put("3", "third"); - System.out.println(s.getMetadata()); // Remains unchanged due to deep copy in constructor - s.getMetadata().put("4", "fourth"); - System.out.println(s.getMetadata()); // Remains unchanged due to deep copy in getter } } diff --git a/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java b/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java index d5c968ac..24e0ffac 100644 --- a/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java +++ b/src/test/java/Homework2/Pyramid_Printer/PyramidPrinterTest.java @@ -39,5 +39,22 @@ public void testPyramidArrayWithException() { setInput("qwery"); assertDoesNotThrow(() -> pyramidPrinter.run()); } + @Test + public void runWithValidInputTest(){ + setInput("3"); + pyramidPrinter.run(); + printOut(); + + assertEquals("x ", getOutputLines()[0]); + assertEquals("xx ", getOutputLines()[1]); + assertEquals("xxx", getOutputLines()[2]); + + } + @Test + public void runWithInvalidInputTest(){ + setInput("dff"); + assertDoesNotThrow(()-> pyramidPrinter.run()); + } + } \ No newline at end of file diff --git a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java index dcd176a4..a7eca045 100644 --- a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java +++ b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java @@ -8,25 +8,56 @@ class RandomCharsTableTest extends UnitBase { static RandomCharsTable randomCharsTable; + static char[][] charTable; @BeforeAll - public void init(){ + public static void init() { randomCharsTable = new RandomCharsTable(); + randomCharsTable.length = 3; + randomCharsTable.height = 3; + charTable = new char[][]{ + {'A', 'B', 'C'}, + {'D', 'E', 'F'}, + {'G', 'H', 'I'} + }; } @Test - void getRandomChar() { + void getEvenResultTest() { + String expectedEven = "even letters - B D F H"; + String evenResult = randomCharsTable.getResult("even", charTable); + + assertEquals(expectedEven, evenResult); + } + + @Test + void getOddResultTest() { + String expectedOdd = "odd letters - A C E G I"; + String oddResult = randomCharsTable.getResult("odd", charTable); + + assertEquals(expectedOdd, oddResult); } @Test - void getRandomCharsTable() { + void runWithValidOddInputTest() { + setInput("3 3 odd"); + randomCharsTable.run(); + printOut(); + } @Test - void isValid() { + void runWithValidEvenInputTest() { + setInput("3 3 even"); + randomCharsTable.run(); + printOut(); } @Test - void run() { + void runWithInvalidInputTest() { + setInput("sfr"); + + assertThrows(IllegalArgumentException.class, () -> randomCharsTable.run()); } + } \ No newline at end of file diff --git a/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java b/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java index 9357860c..01a2fc78 100644 --- a/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java +++ b/src/test/java/Homework2/Traffic_Light/TrafficLightTest.java @@ -10,19 +10,57 @@ class TrafficLightTest extends UnitBase { static TrafficLight trafficLight; @BeforeAll - public void init(){ + public static void init(){ trafficLight = new TrafficLight(); } @Test - void getTrafficLightTest() { - trafficLight.getTrafficLight(0); + void getTrafficLightTestZero() { + String color = TrafficLightTest.trafficLight.getTrafficLight(0); + assertEquals("Green", color); + } + + @Test + void getTrafficLigthTest(){ + String color = TrafficLightTest.trafficLight.getTrafficLight(357); + assertEquals("Yellow", color); + } + @Test + void negativeInputNumberTest(){ + assertThrows(IllegalArgumentException.class, () -> TrafficLightTest.trafficLight.getTrafficLight(-6)); + } + @Test + void endOfTheDayTest(){ + assertThrows(IllegalArgumentException.class, () -> TrafficLightTest.trafficLight.getTrafficLight(87000)); } + @Test + void runTestZero() { + setInput("0"); + TrafficLightTest.trafficLight.run(); + String color = getOutput(); + assertEquals("Green", color); + } + + @Test + void runTest(){ + setInput("357"); + TrafficLightTest.trafficLight.run(); + String color = getOutput(); + assertEquals("Yellow", color); + } + + @Test + void runTestNegative(){ + setInput("-6"); + assertThrows(IllegalArgumentException.class, () -> TrafficLightTest.trafficLight.run()); + } @Test - void runTest() { + void runTestEndOfTheDay(){ + setInput("87000"); + assertThrows(IllegalArgumentException.class, () -> TrafficLightTest.trafficLight.run()); } } \ No newline at end of file From 65a147b70cb0be4a8f08441333ad12d388594ada Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Tue, 7 Sep 2021 02:24:51 +0300 Subject: [PATCH 19/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3798e9f..a3895d85 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/homework1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2/TrafficLight.java) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | -| HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2_1/PyramidPrinter.java) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | +| HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Pyramid_Printer) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | | HW3 | [Random Characters Table and Counter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Random_Chars_Table) | The app that reads input lines, defines the strategy, prints a table of random chars and calculates odd and even ones | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 06950fa8255bb2923aae123b07d88c154307dc4e Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Tue, 7 Sep 2021 02:28:07 +0300 Subject: [PATCH 20/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3895d85..5927f33a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ | Number | Solution | Short description | --- | --- | --- | | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/homework1) | The app that reads input arguments and prints them, until "error" argument | -| HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/blob/feature/MargaritaSkorodnikova/src/main/java/Homework2/TrafficLight.java) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | +| HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Traffic_Light) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | | HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Pyramid_Printer) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | | HW3 | [Random Characters Table and Counter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Random_Chars_Table) | The app that reads input lines, defines the strategy, prints a table of random chars and calculates odd and even ones | From 0391edbf7b019d47e53d342a9eec1ed39b2bcd4a Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Tue, 7 Sep 2021 02:33:23 +0300 Subject: [PATCH 21/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5927f33a..8d830113 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Number | Solution | Short description | --- | --- | --- | -| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/homework1) | The app that reads input arguments and prints them, until "error" argument | +| HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Traffic_Light) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | | HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Pyramid_Printer) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | | HW3 | [Random Characters Table and Counter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Random_Chars_Table) | The app that reads input lines, defines the strategy, prints a table of random chars and calculates odd and even ones | From d1f846871b2bf1f74366fc5073889d209ce0ffec Mon Sep 17 00:00:00 2001 From: Margarita <82059368+Margareeta@users.noreply.github.com> Date: Tue, 7 Sep 2021 02:34:07 +0300 Subject: [PATCH 22/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8d830113..a96e9c85 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ | HW1 | [Console printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework1) | The app that reads input arguments and prints them, until "error" argument | | HW2 | [Traffic Light](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Traffic_Light) | The app that reads input lines, checks them for digits, and calculates cycle of a traffic light and its color | | HW2 | [Pyramid printer](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Pyramid_Printer) | The app that reads input lines, turns them into numbers and prints a two-dimentional array of chars looking like a pyramid | -| HW3 | [Random Characters Table and Counter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Random_Chars_Table) | The app that reads input lines, defines the strategy, prints a table of random chars and calculates odd and even ones | +| HW2 | [Random Characters Table and Counter](https://github.com/NikolaevArtem/Java_Core_June_2021/tree/feature/MargaritaSkorodnikova/src/main/java/Homework2/Random_Chars_Table) | The app that reads input lines, defines the strategy, prints a table of random chars and calculates odd and even ones | [Link to markdown giude](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) From 57a2ea9513b164b6b63464aaae3b48c91fb45c8b Mon Sep 17 00:00:00 2001 From: Daisy Date: Fri, 10 Sep 2021 00:16:09 +0300 Subject: [PATCH 23/24] Finished jUnitTests for RandomCharTable --- .../CustomFileReader/CustomFileReader.java | 34 +++++++++++++++++++ .../java/Homework4/CustomFileReader/Main.java | 11 ++++++ .../RandomCharsTableTest.java | 20 +++++++++-- 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Homework4/CustomFileReader/CustomFileReader.java create mode 100644 src/main/java/Homework4/CustomFileReader/Main.java diff --git a/src/main/java/Homework4/CustomFileReader/CustomFileReader.java b/src/main/java/Homework4/CustomFileReader/CustomFileReader.java new file mode 100644 index 00000000..190889db --- /dev/null +++ b/src/main/java/Homework4/CustomFileReader/CustomFileReader.java @@ -0,0 +1,34 @@ +package Homework4.CustomFileReader; +/* +реализовать приложение, которое считывает данные из файла, и печатает в консоль, но уже без запятых и точек. +Файл положить в main/resources/custom_file_reader + +в классе должно быть реализовано минимум три рабочих способа (один с помощью NIO) считывания данных из файла. +Соответственно публичные методы run1(), run2(), run3(), ... + */ + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class CustomFileReader { + String separator = File.separator; + String path = "C:"+ separator + "Users" + separator + "Daisy" + separator + "Documents" + separator + + "Epam training"+ separator + "Java_Core_June_2021" + separator +"src" + separator + "main" + separator + + "resources" + separator + "custom_file_reader" + separator + "text.txt"; + String text = ""; + + File file = new File(path); + + public void run1() throws FileNotFoundException { + Scanner scanner = new Scanner(file); + while (scanner.hasNextLine()) { + + String text = scanner.nextLine(); + } + scanner.close(); + System.out.println(text); + } + + +} diff --git a/src/main/java/Homework4/CustomFileReader/Main.java b/src/main/java/Homework4/CustomFileReader/Main.java new file mode 100644 index 00000000..53af8824 --- /dev/null +++ b/src/main/java/Homework4/CustomFileReader/Main.java @@ -0,0 +1,11 @@ +package Homework4.CustomFileReader; + +import java.io.FileNotFoundException; + +public class Main { + public static void main(String[] args) throws FileNotFoundException { + CustomFileReader reader = new CustomFileReader(); + reader.run1(); + + } +} diff --git a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java index a7eca045..5a9ca22d 100644 --- a/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java +++ b/src/test/java/Homework2/Random_Chars_Table/RandomCharsTableTest.java @@ -9,6 +9,7 @@ class RandomCharsTableTest extends UnitBase { static RandomCharsTable randomCharsTable; static char[][] charTable; + final String checkTableLines = "\\|(\\s\\w\\s\\|){2}\\s"; @BeforeAll public static void init() { @@ -25,6 +26,7 @@ public static void init() { @Test void getEvenResultTest() { String expectedEven = "even letters - B D F H"; + init(); String evenResult = randomCharsTable.getResult("even", charTable); assertEquals(expectedEven, evenResult); @@ -33,6 +35,7 @@ void getEvenResultTest() { @Test void getOddResultTest() { String expectedOdd = "odd letters - A C E G I"; + init(); String oddResult = randomCharsTable.getResult("odd", charTable); assertEquals(expectedOdd, oddResult); @@ -40,17 +43,30 @@ void getOddResultTest() { @Test void runWithValidOddInputTest() { - setInput("3 3 odd"); + setInput("2 2 odd"); randomCharsTable.run(); printOut(); + String actualTableRow1 = getOutputLines()[0]; + String actualTableRow2 = getOutputLines()[1]; + String actual = getOutputLines()[3]; + assertTrue(actualTableRow1.matches(checkTableLines)); + assertTrue(actualTableRow2.matches(checkTableLines)); + assertEquals("odd letters - ", actual.substring(0, 14)); } @Test void runWithValidEvenInputTest() { - setInput("3 3 even"); + setInput("2 2 even"); randomCharsTable.run(); printOut(); + String actualTableRow1 = getOutputLines()[0]; + String actualTableRow2 = getOutputLines()[1]; + String actual = getOutputLines()[3]; + + assertTrue(actualTableRow1.matches(checkTableLines)); + assertTrue(actualTableRow2.matches(checkTableLines)); + assertEquals("even letters - ", actual.substring(0, 15)); } @Test From 10d4d1b7c40f7de2c1c16b827f0b19ec75a7b250 Mon Sep 17 00:00:00 2001 From: Daisy Date: Sun, 19 Sep 2021 18:32:32 +0300 Subject: [PATCH 24/24] Finished Immutable class --- .../Immutable_Class_Task/Employee.java | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/main/java/Homework3/Immutable_Class_Task/Employee.java b/src/main/java/Homework3/Immutable_Class_Task/Employee.java index a9fbba85..60ea98ad 100644 --- a/src/main/java/Homework3/Immutable_Class_Task/Employee.java +++ b/src/main/java/Homework3/Immutable_Class_Task/Employee.java @@ -2,23 +2,6 @@ import java.util.HashMap; import java.util.Map; -/* -Requirements for immutable classes -1. The class must be declared as final/ - -2.Fields in the class must be declared as private - -3.Data members in the class must be declared as final -(So that we can’t change the value of it after object creation) - -4. A parameterized constructor should initialize all the fields performing a deep copy -(So that data members can’t be modified with object reference) -5.Deep Copy of objects should be performed in the getter methods -(To return a copy rather than returning the actual object reference) - -6. No setters - */ - public final class Employee { private final String name; private final int regNo; @@ -37,7 +20,7 @@ public Employee(String name, int regNo, this.metadata = tempMap; } - public String getName() { return name; } + public String getName() { return new String(this.name); } public int getRegNo() { return regNo; }