Advertisement
gguuppyy

лаба3н2

Dec 2nd, 2023 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.80 KB | Source Code | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. import java.io.*;
  4. import java.io.PrintWriter;
  5. import java.util.HashSet;
  6.  
  7. public class Main {
  8.  
  9.     final static Scanner scan = new Scanner(System.in);
  10.     public static boolean isIncorrect;
  11.  
  12.     public static void main(String[] args) {
  13.         final char[] arrVowels = new char[]{'а', 'у','о', 'и', 'э' ,'ы','я' , 'ю', 'ё', 'е'};
  14.         final char[] arrConsonants  = new char[]{ 'б','в', 'г', 'д', 'ж', 'з', 'й', 'л', 'м', 'н', 'р','к', 'п', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ' };
  15.         HashSet<Character> setConsonants = null;
  16.         HashSet<Character> setVowels = null;
  17.         setConsonants = new HashSet<Character>();
  18.         setVowels = new HashSet<Character>();
  19.  
  20.         for(int i = 0; i < arrVowels.length; i++)
  21.         {
  22.             setVowels.add(arrVowels[i]);
  23.         }
  24.  
  25.         for(int i = 0; i < arrConsonants.length; i++)
  26.         {
  27.             setConsonants.add(arrConsonants[i]);
  28.         }
  29.  
  30.         printInfo();
  31.         String text;
  32.         text = chooseInput();
  33.  
  34.         chooseOutput(text, setVowels, setConsonants );
  35.         scan.close();
  36.     }
  37.  
  38.     public static void printInfo() {
  39.         System.out.println("Программа описывает множество гласных и согласных букв русского алфавита и формирует множество гласных и согласных букв из предложения");
  40.     }
  41.  
  42.     public static HashSet<Character> getSetInText( HashSet<Character> stAlpha, String text)
  43.     {
  44.  
  45.         HashSet<Character> setInText = new HashSet<Character>() ;
  46.  
  47.         for (int i = 0; i < text.length(); i++)
  48.         {
  49.             if (stAlpha.contains(text.charAt(i)))
  50.             {
  51.                 setInText.add(text.charAt(i));
  52.             }
  53.         }
  54.  
  55.         return setInText;
  56.     }
  57.     public static String input() {
  58.         String str;
  59.         str = scan.nextLine();
  60.         if (str.isEmpty()) {
  61.             isIncorrect = true;
  62.             System.err.print("Ошибка. Строка не может быть пустой. ");
  63.         }
  64.         return str;
  65.     }
  66.  
  67.     public static String readTextFromConsole() {
  68.         String text;
  69.         do {
  70.             isIncorrect = false;
  71.             System.out.println("Введите строку:");
  72.             text = input();
  73.         } while (isIncorrect);
  74.         return text;
  75.     }
  76.  
  77.     public static String chooseInput() {
  78.         String option;
  79.         String text = null;
  80.  
  81.         System.out.println("Выберите способ ввода данных.\n" +
  82.                 "Введите 'console', если хотите ввести данные через консоль.\n"
  83.                 + "Введите 'file', если хотите передать данные из файла");
  84.         option = chooseAction();
  85.         if (option.equalsIgnoreCase("console")) {
  86.             text = readTextFromConsole();
  87.         } else
  88.             text = readFile();
  89.         return text;
  90.     }
  91.  
  92.     public static String readPath() {
  93.         String path;
  94.         System.out.println("Введите путь к файлу:");
  95.         do {
  96.             isIncorrect = false;
  97.             path = scan.nextLine();
  98.             File file = new File(path);
  99.             if (!file.exists() || !path.endsWith(".txt") || file.isDirectory()) {
  100.                 isIncorrect = true;
  101.                 System.err.println("Файл недоступен. Повторите ввод:");
  102.             }
  103.         } while (isIncorrect);
  104.         return path;
  105.     }
  106.  
  107.     public static String readTextFromFile(Scanner fscan) {
  108.         String text;
  109.         text = fscan.nextLine();
  110.         if (text.isEmpty()) {
  111.             isIncorrect = true;
  112.             System.err.print("Ошибка. Файл пуст. ");
  113.         }
  114.         return text;
  115.     }
  116.  
  117.     public static String readFile() {
  118.         String path;
  119.         String text = null;
  120.  
  121.         do {
  122.             isIncorrect = false;
  123.             path = readPath();
  124.             Scanner fscan = null;
  125.             try {
  126.                 fscan = new Scanner(new File(path));
  127.             } catch (FileNotFoundException e) {
  128.                 System.out.println(e.getMessage());
  129.             }
  130.             if (!isIncorrect)
  131.                 text = readTextFromFile(fscan);
  132.  
  133.             fscan.close();
  134.         } while (isIncorrect);
  135.  
  136.         return text;
  137.     }
  138.  
  139.     public static String chooseAction() {
  140.         String input;
  141.         do {
  142.             isIncorrect = false;
  143.             input = scan.nextLine();
  144.             if (!input.equalsIgnoreCase("console") && !input.equalsIgnoreCase("file")) {
  145.                 isIncorrect = true;
  146.                 System.err.println("Ошибка. Введите 'console' или 'file':");
  147.             }
  148.         } while (isIncorrect);
  149.         return input;
  150.     }
  151.  
  152.     public static void writeConsole(String text, HashSet<Character> vowels, HashSet<Character> consonants  ) {
  153.  
  154.  
  155.         int countAlphaVowels = 0;
  156.         int countAlphaConsonants = 0;
  157.         HashSet<Character> vowelsInText = null;
  158.         HashSet<Character> consonantsInText = null;
  159.  
  160.  
  161.         vowelsInText = getSetInText(vowels, text);
  162.         countAlphaVowels = vowelsInText.size();
  163.         if (countAlphaVowels != 0)
  164.         {
  165.             System.out.println("Элементы в множестве гласных букв:");
  166.             for (int i : vowelsInText)
  167.             {
  168.                 System.out.print((char)i + " ");
  169.             }
  170.             System.out.println();
  171.             System.out.println("Количество элементов в множестве гласных букв: " + countAlphaVowels);
  172.         }
  173.         else
  174.         {
  175.             System.out.println("В множестве гласных букв нет элементов.");
  176.         }
  177.  
  178.  
  179.         consonantsInText = getSetInText(consonants, text);
  180.         countAlphaConsonants = consonantsInText.size();
  181.  
  182.         if (countAlphaConsonants != 0)
  183.         {
  184.             System.out.println("Элементы в множестве согласных букв: ");
  185.             for (int i : consonantsInText)
  186.             {
  187.                 System.out.print((char)i + " ");
  188.             }
  189.             System.out.println();
  190.             System.out.println("Количество элементов в множестве согласных букв: " + countAlphaConsonants);
  191.         }
  192.         else
  193.         {
  194.             System.out.println("В множестве согласных букв нет элементов.");
  195.         }
  196.     }
  197.  
  198.     public static void writeFile(String text, HashSet<Character> vowels, HashSet<Character> consonants ) {
  199.  
  200.         do {
  201.             isIncorrect = false;
  202.             try (PrintWriter pw = new PrintWriter(new FileWriter(readPath(), false))) {
  203.  
  204.                 int countAlphaVowels = 0;
  205.                 int countAlphaConsonants = 0;
  206.                 HashSet<Character> vowelsInText = null;
  207.                 HashSet<Character> consonantsInText = null;
  208.  
  209.                 vowelsInText = getSetInText(vowels, text);
  210.                 countAlphaVowels = vowelsInText.size();
  211.                 if (countAlphaVowels != 0)
  212.                 {
  213.                     System.out.println("Элементы в множестве гласных букв:");
  214.                     for (int i : vowelsInText)
  215.                     {
  216.                         pw.print((char)i + " ");
  217.                     }
  218.                     pw.println();
  219.                     pw.println("Количество элементов в множестве гласных букв: " + countAlphaVowels);
  220.                 }
  221.                 else
  222.                 {
  223.                     pw.println("В множестве гласных букв нет элементов.");
  224.                 }
  225.  
  226.                 consonantsInText = getSetInText(consonants, text);
  227.                 countAlphaConsonants = consonantsInText.size();
  228.  
  229.                 if (countAlphaConsonants != 0)
  230.                 {
  231.                     pw.println("Элементы в множестве согласных букв: ");
  232.                     for (int i : consonantsInText)
  233.                     {
  234.                         pw.print((char)i + " ");
  235.                     }
  236.                     pw.println();
  237.                     pw.println("Количество элементов в множестве согласных букв: " + countAlphaConsonants);
  238.                 }
  239.                 else
  240.                 {
  241.                     pw.println("В множестве согласных букв нет элементов.");
  242.                 }
  243.  
  244.                 pw.println("Информация успешно записана в файл.");
  245.             } catch (IOException e) {
  246.                 System.err.println(e.getMessage());
  247.                 System.err.println("Ошибка. Невозможно записать данные в файл.");
  248.                 isIncorrect = true;
  249.             }
  250.         } while (isIncorrect);
  251.         System.out.println("информация успешно записана в файл.");
  252.     }
  253.  
  254.     public static void chooseOutput(String text, HashSet<Character> vowels, HashSet<Character> consonants) {
  255.         String option;
  256.         System.out.println("Выберите способ вывода результата.\n" +
  257.                         "Введите 'console', если хотите вывести результат через консоль.\n" +
  258.                 "Введите 'file', если хотите передать результат в файл.");
  259.         option = chooseAction();
  260.         if (option.equals("console"))
  261.             writeConsole(text, vowels, consonants);
  262.         else
  263.             writeFile(text, vowels,  consonants);
  264.     }
  265.  
  266. }
  267.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement