diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index 7efef9a8..18feba72 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -1,5 +1,7 @@ package com.example.task01; +import java.awt.*; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -8,14 +10,27 @@ public static void main(String[] args) throws IOException { //здесь вы можете вручную протестировать ваше решение, вызывая реализуемый метод и смотря результат // например вот так: - /* System.out.println(checkSumOfStream(new ByteArrayInputStream(new byte[]{0x33, 0x45, 0x01}))); - */ + System.out.println(checkSumOfStream(null)); } + public static final String ANSI_MAGENTA = "\u001B[35m"; + public static final String ANSI_RESET = "\u001B[0m"; + public static int checkSumOfStream(InputStream inputStream) throws IOException { - // your implementation here - return 0; + try { + int sum = 0; + int input = inputStream.read(); + + while (input != -1) { + sum = Integer.rotateLeft(sum, 1) ^ input; + input = inputStream.read(); + } + return sum; + } catch (NullPointerException exception) { + System.out.println(ANSI_MAGENTA + "Bytes array is empty " + exception + ANSI_RESET); + throw new IllegalArgumentException(exception); + } } } diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 865ea659..dc611c9c 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -9,5 +9,23 @@ public static void main(String[] args) throws IOException { // - направить стандартный вывод программы в файл output.test // - запустить программу // - и сравнить получившийся файл output.test с expected.test + ConvertToUnix(); + } + + public static void ConvertToUnix() throws IOException { + + int currentString = System.in.read(); + int nextString; + + while (currentString != -1) { + nextString = System.in.read(); + + if (currentString != 13 || nextString != 10) + System.out.write(currentString); + + currentString = nextString; + } + + System.out.flush(); } } diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index 332e0366..56dbd6a7 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -1,21 +1,32 @@ package com.example.task03; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; public class Task03Main { public static void main(String[] args) throws IOException { //здесь вы можете вручную протестировать ваше решение, вызывая реализуемый метод и смотря результат // например вот так: - /* - System.out.println(readAsString(new FileInputStream("task03/src/com/example/task03/input.test"), Charset.forName("KOI8-R"))); - */ + + System.out.println(readAsString(Files.newInputStream(Paths.get("task03/src/com/example/task03/input.test")), Charset.forName("KOI8-R"))); + } public static String readAsString(InputStream inputStream, Charset charset) throws IOException { - // your implementation here - return ""; + if (inputStream == null || charset == null) + throw new IllegalArgumentException(); + + Reader reader = new InputStreamReader(inputStream, charset); + + StringBuilder stringBuilder = new StringBuilder(); + int input; + + while ((input = reader.read()) != -1) + stringBuilder.append((char) input); + + return stringBuilder.toString(); } } diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 4236c2e7..18ce158a 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -1,6 +1,9 @@ package com.example.task04; import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Locale; +import java.util.Scanner; public class Task04Main { public static void main(String[] args) throws IOException { @@ -9,6 +12,17 @@ public static void main(String[] args) throws IOException { // - запустить программу // - проверить, что получилось 351.731900 - System.out.println("0.0"); + Scanner scanner = new Scanner(new InputStreamReader(System.in)).useLocale(Locale.US); + double sum = 0.0d; + + while (scanner.hasNext()) { + if (scanner.hasNextDouble()) { + sum += scanner.nextDouble(); + } else { + scanner.next(); + } + } + + System.out.printf(Locale.US, "%6f", sum); } }