Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashSet;
- import java.util.Scanner;
- import java.io.*;
- public class Main {
- static Scanner scan = new Scanner(System.in);
- public static void main(String[] args) {
- writeTask();
- System.out.print("Выберите способ ввода данных (1 - через консоль, 2 - с помощью файлов): ");
- int choice = chooseInputOutputMethod();
- String sequence = getCharacterSequence(choice);
- HashSet<Character> answer = getSearchCharactersSet(sequence);
- System.out.print("Выберите способ вывода данных (1 - через консоль, 2 - с помощью файлов): ");
- choice = chooseInputOutputMethod();
- outputResult(choice, answer);
- scan.close();
- }
- public static void writeTask() {
- System.out.println("Данная программа строит и печатает множество, элементами которого\nявляются встречающиеся в последовательности скобки: () [] {} и цифры");
- }
- public static String takeCharacterSequenceFromConsole() {
- String sequence = "";
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- System.out.print("Введите непустую последовательность: ");
- try {
- sequence = scan.nextLine();
- } catch (Exception e) {
- isNotCorrect = true;
- System.out.println("Произошла ошибка ввода. Повторите попытку...");
- }
- if ((!isNotCorrect) && (sequence == "")) {
- isNotCorrect = true;
- System.out.println("Введённая последовательность должна быть непустой!");
- }
- } while (isNotCorrect);
- System.out.println("Полученная строка: " + sequence);
- return sequence;
- }
- public static String takePathToFile() {
- String path;
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- System.out.print("Введите путь к файлу: ");
- path = scan.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("Не удалось найти файл по заданному пути. Повторите попытку...");
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- return path;
- }
- public static String takeCharacterSequenceFromFile() {
- System.out.println("Требуется файл для чтения строки.");
- String path = takePathToFile();
- boolean isNotCorrect;
- String sequence = "";
- do {
- isNotCorrect = false;
- try (Scanner fileReader = new Scanner(new File (path))) {
- sequence = fileReader.nextLine();
- } catch (IOException e) {
- isNotCorrect = true;
- System.out.print("Произошла ошибка доступа к файлу. Заново введите путь к файлу: ");
- path = takePathToFile();
- }
- if ((!isNotCorrect) && (sequence == "")) {
- isNotCorrect = true;
- System.out.println("Введённая последовательность должна быть непустой!");
- }
- } while (isNotCorrect);
- System.out.println("Полученная строка: " + sequence);
- return sequence;
- }
- public static HashSet<Character> getSearchCharactersSet(String sequence) {
- HashSet<Character> searchCharactersSet = new HashSet<>();
- searchCharactersSet.add('(');
- searchCharactersSet.add(')');
- searchCharactersSet.add('{');
- searchCharactersSet.add('}');
- searchCharactersSet.add('[');
- searchCharactersSet.add(']');
- for (int i = '0'; i <= '9'; i++) {
- searchCharactersSet.add((char) i);
- }
- HashSet<Character> searchSet = new HashSet<>();
- for (int i = 0; i < sequence.length(); i++) {
- if (searchCharactersSet.contains(sequence.charAt(i))) {
- searchSet.add(sequence.charAt(i));
- }
- }
- return searchSet;
- }
- public static void outputSetInConsole(HashSet<Character> charactersSet) {
- if (charactersSet != null) {
- System.out.println(charactersSet);
- } else {
- System.out.println("В строке не было найдено скобок и цифр.");
- }
- }
- public static void outputSetInFile(HashSet<Character> charactersSet) {
- System.out.println("Требуется файл для записи искомого множества.");
- String path = takePathToFile();
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- try (FileWriter fileWriter = new FileWriter(new File (path))) {
- if (charactersSet != null) {
- fileWriter.write(charactersSet.toString());
- } else {
- fileWriter.write("В строке не было найдено скобок и цифр.");
- }
- } catch (IOException e) {
- isNotCorrect = true;
- System.out.println("Произошла ошибка доступа к файлу. Заново введите путь к файлу: ");
- path = takePathToFile();
- }
- } while (isNotCorrect);
- System.out.println("Множество записано в файл!");
- }
- public static int chooseInputOutputMethod() {
- boolean isNotCorrect;
- int choice = 0;
- do {
- isNotCorrect = false;
- try {
- choice = Integer.parseInt(scan.nextLine());
- } catch (NumberFormatException e) {
- System.out.println("Число введено некорректно. Повторите попытку...");
- isNotCorrect = true;
- }
- if ((!isNotCorrect) && (choice != 1) && (choice != 2)) {
- System.out.println("Введите либо 1, либо 2. Ваш выбор: ");
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- return choice;
- }
- public static String getCharacterSequence(int choice) {
- String sequence = "";
- if (choice == 1) {
- sequence = takeCharacterSequenceFromConsole();
- } else {
- sequence = takeCharacterSequenceFromFile();
- }
- return sequence;
- }
- public static void outputResult(int choice, HashSet<Character> answer) {
- if (choice == 1) {
- outputSetInConsole(answer);
- } else {
- outputSetInFile(answer);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement