Advertisement
THOMAS_SHELBY_18

Lab3_2(Java)

Nov 19th, 2023 (edited)
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.50 KB | Source Code | 0 0
  1. package com.company;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.HashSet;
  8. import java.util.Scanner;
  9.  
  10. public class Main {
  11.     private static final Scanner scan = new Scanner(System.in);
  12.     private static void printCondition() {
  13.         System.out.println("Данная программа напечатает множество всех встречающихся в строке знаков арифметических операций и цифр");
  14.     }
  15.     private static int readNum(int min, int max) {
  16.         int n;
  17.         boolean isIncorrect;
  18.         n = 0;
  19.         do {
  20.             isIncorrect = false;
  21.             try {
  22.                 n = Integer.parseInt(scan.nextLine());
  23.             }
  24.             catch (Exception err) {
  25.                 System.out.println("Вы ввели некорректные данные. Попробуйте снова");
  26.                 isIncorrect = true;
  27.             }
  28.             if (!isIncorrect && (n < min || n > max)) {
  29.                 System.out.println("Введено значение не входящее в диапазон допустимых значений");
  30.                 isIncorrect = true;
  31.             }
  32.         } while (isIncorrect);
  33.         return n;
  34.     }
  35.     private static String inputStr() {
  36.         int choice;
  37.         String str;
  38.  
  39.         System.out.println("Выберите вариант ввода:");
  40.         System.out.println("1.Ввод из консоли");
  41.         System.out.println("2.Ввод из файла");
  42.         choice = readNum(1, 2);
  43.  
  44.         if (choice == 1) {
  45.             str = inputStrFromConsole();
  46.         }
  47.         else {
  48.             str = inputStrFromFile();
  49.         }
  50.  
  51.         return str;
  52.     }
  53.     private static String inputStrFromConsole() {
  54.         String str;
  55.         do {
  56.             System.out.println("Введите текст:");
  57.             str = scan.nextLine();
  58.         } while (str.isBlank());
  59.  
  60.         return str;
  61.     }
  62.     private static String inputStrFromFile() {
  63.         String pathFile, str;
  64.         boolean isInputFromFileSuccessfully;
  65.  
  66.         System.out.println("Данные в файле должны содержать текст");
  67.         do {
  68.             System.out.print("Введите путь к файлу и его имя с его раширением:");
  69.             pathFile = scan.nextLine();
  70.             isInputFromFileSuccessfully = checkFile(pathFile);
  71.         } while(!isInputFromFileSuccessfully);
  72.  
  73.         str = readFile(pathFile);
  74.  
  75.         return str;
  76.     }
  77.     private static boolean checkFile(String path) {
  78.         String bufStr, checkStr;
  79.         File checkFile;
  80.         boolean isFileCorrect;
  81.         StringBuilder builderOfStr;
  82.  
  83.         checkFile = new File(path);
  84.         builderOfStr = new StringBuilder();
  85.         isFileCorrect = true;
  86.  
  87.         if (!checkFile.isFile()) {
  88.             System.out.println("Файл не найден! Пожалуйста проверьте существование файла и введите путь заново");
  89.             isFileCorrect = false;
  90.         }
  91.         if (isFileCorrect && !checkFile.canRead() ) {
  92.             System.out.println("Файл не может быть прочитан! Пожалуйста проверьте файл и введите путь заново");
  93.             isFileCorrect = false;
  94.         }
  95.         if (isFileCorrect) {
  96.             try (Scanner fileScan = new Scanner(checkFile)) {
  97.                 while (fileScan.hasNextLine()) {
  98.                     bufStr = fileScan.nextLine();
  99.                     builderOfStr.append(bufStr);
  100.                 }
  101.  
  102.                 checkStr = builderOfStr.toString();
  103.  
  104.                 if (checkStr.isBlank()) {
  105.                     isFileCorrect = false;
  106.                     System.out.println("Файл пустой! Внесите изменения в файл и повторите попытку!");
  107.                 }
  108.             }
  109.             catch (FileNotFoundException e) {
  110.                 System.out.println("Файл по данному пути не существует! Пожалуйста проверьте файл и введите путь заново");
  111.                 isFileCorrect = false;
  112.             }
  113.         }
  114.         return isFileCorrect;
  115.     }
  116.     private static String readFile(String path) {
  117.         String bufStr, str;
  118.         File file;
  119.         StringBuilder builderOfStr;
  120.  
  121.         file = new File(path);
  122.         builderOfStr = new StringBuilder();
  123.  
  124.         try (Scanner fileScan = new Scanner(file)) {
  125.             do {
  126.                 bufStr = fileScan.nextLine();
  127.                 builderOfStr.append(bufStr);
  128.                 builderOfStr.append(' ');
  129.             } while (fileScan.hasNextLine());
  130.         }
  131.         catch (FileNotFoundException e) {
  132.             System.out.println("Файл по данному пути не существует. Пожалуйста проверьте файл и введите путь заново");
  133.         }
  134.  
  135.         str = builderOfStr.toString();
  136.  
  137.         return str;
  138.     }
  139.     public static HashSet<Character> findSymbols(String line){
  140.         HashSet<Character> setOfAvalibleAnswerSymbols = new HashSet<>();
  141.         HashSet<Character> setOfAnswerSymbols = new HashSet<>();
  142.  
  143.         setOfAvalibleAnswerSymbols.add('+');
  144.         setOfAvalibleAnswerSymbols.add('-');
  145.         setOfAvalibleAnswerSymbols.add('/');
  146.         setOfAvalibleAnswerSymbols.add('*');
  147.         for (char i = '0'; i < '9'; i++){
  148.             setOfAvalibleAnswerSymbols.add(i);
  149.         }
  150.         for (int i = 0; i < line.length(); i++){
  151.             if (setOfAvalibleAnswerSymbols.contains(line.charAt(i))){
  152.                 setOfAnswerSymbols.add(line.charAt(i));
  153.             }
  154.         }
  155.         return setOfAnswerSymbols;
  156.     }
  157.     private static void outputAnswer(HashSet<Character> answer) {
  158.         int choice;
  159.  
  160.         System.out.println("Выберите вариант вывода:");
  161.         System.out.println("1.Вывод в консоль");
  162.         System.out.println("2.Вывод в файл");
  163.         choice = readNum(1, 2);
  164.  
  165.         if (choice == 1) {
  166.             outputAnswerToConsole(answer);
  167.         }
  168.         else {
  169.             outputAnswerToFile(answer);
  170.         }
  171.     }
  172.  
  173.     private static void outputAnswerToConsole(HashSet<Character> answer) {
  174.         System.out.println(answer);
  175.     }
  176.  
  177.     private static void outputAnswerToFile(HashSet<Character> answer) {
  178.         String path;
  179.         boolean isFileIncorrect;
  180.  
  181.         System.out.println("Для вывода введите путь к файлу.");
  182.         System.out.println("Если файл отсутствует то он будет создан автоматически по указанному пути или в корневой папке программы (по умолчанию)");
  183.         do {
  184.             isFileIncorrect = false;
  185.             System.out.print("Введите путь к файлу и его имя c расширением: ");
  186.             path = scan.nextLine();
  187.             File outputFile = new File(path);
  188.             try {
  189.                 if (outputFile.isFile()) {
  190.                     if (outputFile.canWrite()) {
  191.                         try (FileWriter writer = new FileWriter(outputFile)) {
  192.                             writer.write(answer.toString());
  193.                         }
  194.                     }
  195.                     else {
  196.                         System.out.println("Файл доступен только для чтения!");
  197.                         isFileIncorrect = true;
  198.                     }
  199.                 }
  200.                 else {
  201.                     outputFile.createNewFile();
  202.                     try (FileWriter writer = new FileWriter(outputFile)) {
  203.                         writer.write(answer.toString());
  204.                     }
  205.                 }
  206.             }
  207.             catch (IOException e) {
  208.                 System.out.println("Не удалось вывести в файл!");
  209.                 isFileIncorrect = true;
  210.             }
  211.         } while (isFileIncorrect);
  212.         System.out.println("Вывод данных... успешно!");
  213.     }
  214.     public static void main(String[] args) {
  215.         String strIn;
  216.         HashSet<Character> answerSymbols;
  217.  
  218.         printCondition();
  219.         strIn = inputStr();
  220.         answerSymbols = findSymbols(strIn);
  221.         outputAnswer(answerSymbols);
  222.         scan.close();
  223.     }
  224. }
  225.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement