diff --git a/hw20.txt b/hw20.txt new file mode 100644 index 0000000..1b19cda --- /dev/null +++ b/hw20.txt @@ -0,0 +1,14 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Praesent id dolor a lorem tempus tincidunt ut vel orci. +Nulla tincidunt fringilla turpis, ac eleifend nibh mollis id. +Aliquam vestibulum laoreet enim sit amet rhoncus. +Nullam pellentesque convallis velit varius euismod. +Fusce vulputate nisi vel lectus volutpat porttitor. +Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. +Aenean at porta velit, sed dapibus sapien. +Morbi ultricies magna quis odio venenatis, sit amet fringilla augue sollicitudin. +Phasellus dictum et justo ac vestibulum. Aliquam venenatis bibendum libero ac aliquet. +Curabitur lorem libero, elementum non ultrices a, interdum ut eros. +Quisque aliquet vestibulum odio id efficitur. +Donec elementum vel lectus quis accumsan. Aenean in nunc fermentum, vulputate diam id, posuere ex. +Cras nibh ex, venenatis quis mi a, aliquam maximus ligula. diff --git a/src/main/java/ru/otus/java/basic/homeworks/ru/otus/java/basic/homeworks/homework20/Application.java b/src/main/java/ru/otus/java/basic/homeworks/ru/otus/java/basic/homeworks/homework20/Application.java new file mode 100644 index 0000000..2d9f4f2 --- /dev/null +++ b/src/main/java/ru/otus/java/basic/homeworks/ru/otus/java/basic/homeworks/homework20/Application.java @@ -0,0 +1,66 @@ +package ru.otus.java.basic.homeworks.ru.otus.java.basic.homeworks.homework20; + +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Scanner; + +public class Application { + public static void main(String[] args) throws IOException { + String[] items; + try (Scanner scanner = new Scanner(System.in)) { + do { + System.out.println("Enter the file name and sequence. For example: text.txt abc"); + String enterString = scanner.nextLine(); + items = enterString.trim().split(" "); + if (items.length != 2) { + System.out.println("Incorrect input"); + } else { + break; + } + } while (true); + } + int count = countingSequence(items[0], items[1]); + if (count != -1) { + System.out.println("In the '" + items[0] + "' file, the sequence is repeated " + count + " times"); + } + } + + public static int countingSequence(String fileName, String sequence) { + if (sequence.isEmpty()) { + return 0; + } + StringBuilder buffer = new StringBuilder(); + buffer.append(" ".repeat(sequence.length())); + int count = 0; + + try (FileReader fileReader = new FileReader(fileName, StandardCharsets.UTF_8)) { + int c; + while ((c = fileReader.read()) != -1) { + roll(buffer); + buffer.append((char) c); + if (compareSequence(buffer, sequence)) { + count++; + } + } + return count; + } catch (FileNotFoundException e) { + System.out.println("The file '" + fileName + "' is not found"); + return -1; + } catch (IOException e) { + System.out.println("I/O error"); + return -1; + } + } + + private static boolean compareSequence(StringBuilder buffer, String sequence) { + return buffer.toString().equals(sequence); + } + + private static void roll(StringBuilder buffer) { + if (buffer.length() > 1) { + buffer.deleteCharAt(0); + } + } +} \ No newline at end of file