Advertisement
THOMAS_SHELBY_18

4_2JAVA

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