Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions hw20.txt
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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);
}
}
}