Advertisement
THOMAS_SHELBY_18

Lab3_1(Java)

Nov 19th, 2023
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.00 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.  
  12.     private static void printCondition() {
  13.         System.out.println("Данная программа выведет каждое нечетное слово в кавычках, а каждое четное - в квадратных скобках");
  14.     }
  15.  
  16.     private static int readNum(int min, int max) {
  17.         int n;
  18.         boolean isIncorrect;
  19.         n = 0;
  20.         do {
  21.             isIncorrect = false;
  22.             try {
  23.                 n = Integer.parseInt(scan.nextLine());
  24.             }
  25.             catch (Exception err) {
  26.                 System.out.println("Вы ввели некорректные данные. Попробуйте снова");
  27.                 isIncorrect = true;
  28.             }
  29.             if (!isIncorrect && (n < min || n > max)) {
  30.                 System.out.println("Введено значение не входящее в диапазон допустимых значений");
  31.                 isIncorrect = true;
  32.             }
  33.         } while (isIncorrect);
  34.         return n;
  35.     }
  36.  
  37.     private static String inputText() {
  38.         int choice;
  39.         String text;
  40.  
  41.         System.out.println("Выберите вариант ввода:");
  42.         System.out.println("1.Ввод из консоли");
  43.         System.out.println("2.Ввод из файла");
  44.         choice = readNum(1, 2);
  45.  
  46.         if (choice == 1) {
  47.             text = inputTextFromConsole();
  48.         }
  49.         else {
  50.             text = inputTextFromFile();
  51.         }
  52.  
  53.         return text;
  54.     }
  55.  
  56.     private static String inputTextFromConsole() {
  57.         String text;
  58.         do {
  59.             System.out.println("Введите текст:");
  60.             text = scan.nextLine();
  61.         } while (text.isBlank());
  62.         text = " " + text + " ";
  63.  
  64.         return text;
  65.     }
  66.  
  67.     private static String inputTextFromFile() {
  68.         String pathFile, text;
  69.         boolean isInputFromFileSuccessfully;
  70.  
  71.         System.out.println("Данные в файле должны содержать текст");
  72.         do {
  73.             System.out.print("Введите путь к файлу и его имя с его раширением:");
  74.             pathFile = scan.nextLine();
  75.             isInputFromFileSuccessfully = checkFile(pathFile);
  76.         } while(!isInputFromFileSuccessfully);
  77.  
  78.         text = readFile(pathFile);
  79.         text = " " + text + " ";
  80.  
  81.         return text;
  82.     }
  83.  
  84.     private static boolean checkFile(String path) {
  85.         String bufText, checkText;
  86.         File checkFile;
  87.         boolean isFileCorrect;
  88.         StringBuilder builderOfText;
  89.  
  90.         checkFile = new File(path);
  91.         builderOfText = new StringBuilder();
  92.         isFileCorrect = true;
  93.  
  94.         if (!checkFile.isFile()) {
  95.             System.out.println("Файл не найден! Пожалуйста проверьте существование файла и введите путь заново");
  96.             isFileCorrect = false;
  97.         }
  98.         if (isFileCorrect && !checkFile.canRead() ) {
  99.             System.out.println("Файл не может быть прочитан! Пожалуйста проверьте файл и введите путь заново");
  100.             isFileCorrect = false;
  101.         }
  102.         if (isFileCorrect) {
  103.             try (Scanner fileScan = new Scanner(checkFile)) {
  104.                 while (fileScan.hasNextLine()) {
  105.                     bufText = fileScan.nextLine();
  106.                     builderOfText.append(bufText);
  107.                 }
  108.  
  109.                 checkText = builderOfText.toString();
  110.  
  111.                 if (checkText.isBlank()) {
  112.                     isFileCorrect = false;
  113.                     System.out.println("Файл пустой! Внесите изменения в файл и повторите попытку!");
  114.                 }
  115.             }
  116.             catch (FileNotFoundException e) {
  117.                 System.out.println("Файл по данному пути не существует! Пожалуйста проверьте файл и введите путь заново");
  118.                 isFileCorrect = false;
  119.             }
  120.         }
  121.         return isFileCorrect;
  122.     }
  123.  
  124.     private static String readFile(String path) {
  125.         String bufText, text;
  126.         File file;
  127.         StringBuilder builderOfText;
  128.  
  129.         file = new File(path);
  130.         builderOfText = new StringBuilder();
  131.  
  132.         try (Scanner fileScan = new Scanner(file)) {
  133.             do {
  134.                 bufText = fileScan.nextLine();
  135.                 builderOfText.append(bufText);
  136.                 builderOfText.append(' ');
  137.             } while (fileScan.hasNextLine());
  138.         }
  139.         catch (FileNotFoundException e) {
  140.             System.out.println("Файл по данному пути не существует. Пожалуйста проверьте файл и введите путь заново");
  141.         }
  142.  
  143.         text = builderOfText.toString();
  144.  
  145.         return text;
  146.     }
  147.  
  148.     private static int receiveLastSymbIndex(String text) {
  149.         int i;
  150.         char c;
  151.         i = text.length();
  152.         do {
  153.             i--;
  154.             c = text.charAt(i);
  155.         } while ((c == 32) && (i != 0));
  156.         return i;
  157.     }
  158.  
  159.     private static int receiveNextSpaceIndex(String text, int spaceIndex) {
  160.         int i;
  161.         char c;
  162.         i = spaceIndex;
  163.         do {
  164.             i++;
  165.             c = text.charAt(i);
  166.         } while (c != 32);
  167.  
  168.         return i;
  169.     }
  170.  
  171.     private static String createNewWord(String text, int spaceIndex, int numWord) {
  172.         int i, nextSpaceIndex;
  173.         String word;
  174.         char beginSym, endSym;
  175.         StringBuilder builderOfNewWord;
  176.  
  177.         builderOfNewWord = new StringBuilder();
  178.  
  179.         do {
  180.             nextSpaceIndex = receiveNextSpaceIndex(text, spaceIndex);
  181.             spaceIndex++;
  182.         } while (nextSpaceIndex - spaceIndex == 0);
  183.  
  184.         i = spaceIndex;
  185.  
  186.         if (numWord % 2 == 1) {
  187.             beginSym = '"';
  188.             endSym = '"';
  189.         }
  190.         else {
  191.             beginSym = '[';
  192.             endSym = ']';
  193.         }
  194.  
  195.         builderOfNewWord.append(beginSym) ;
  196.         do {
  197.             builderOfNewWord.append(text.charAt(i));
  198.             i++;
  199.         } while (i != nextSpaceIndex);
  200.         builderOfNewWord.append(endSym);
  201.  
  202.         word = builderOfNewWord.toString();
  203.         return word;
  204.     }
  205.  
  206.     private static String createNewText(String text) {
  207.         int spaceIndex, numWord, lastSpaceIndex;
  208.         String newWord, newText;
  209.         StringBuilder builderOfNewText;
  210.  
  211.         spaceIndex = 0;
  212.         numWord = 1;
  213.         builderOfNewText = new StringBuilder();
  214.         lastSpaceIndex = receiveLastSymbIndex(text) + 1;
  215.  
  216.         do {
  217.             while (text.charAt(spaceIndex) == 32) {
  218.                 spaceIndex++;
  219.             }
  220.             spaceIndex--;
  221.  
  222.             newWord = createNewWord(text, spaceIndex, numWord);
  223.  
  224.             builderOfNewText.append(newWord);
  225.             builderOfNewText.append(' ');
  226.  
  227.             numWord++;
  228.             spaceIndex = receiveNextSpaceIndex(text, spaceIndex);
  229.         } while (spaceIndex != lastSpaceIndex);
  230.  
  231.         newText = builderOfNewText.toString();
  232.  
  233.         return newText;
  234.     }
  235.  
  236.     private static void outputText(String text) {
  237.         int choice;
  238.  
  239.         System.out.println("Выберите вариант вывода:");
  240.         System.out.println("1.Вывод в консоль");
  241.         System.out.println("2.Вывод в файл");
  242.         choice = readNum(1, 2);
  243.         scan.close();
  244.  
  245.         if (choice == 1) {
  246.             outputTextToConsole(text);
  247.         }
  248.         else {
  249.             outputTextToFile(text);
  250.         }
  251.     }
  252.  
  253.     private static void outputTextToConsole(String text) {
  254.         System.out.print(text);
  255.     }
  256.  
  257.     private static void outputTextToFile(String text) {
  258.         String path;
  259.         boolean isFileIncorrect;
  260.  
  261.         System.out.println("Для вывода введите путь к файлу.");
  262.         System.out.println("Если файл отсутствует то он будет создан автоматически по указанному пути или в корневой папке программы (по умолчанию)");
  263.         do {
  264.             isFileIncorrect = false;
  265.             System.out.print("Введите путь к файлу и его имя c расширением: ");
  266.             path = scan.nextLine();
  267.             File outputFile = new File(path);
  268.             try {
  269.                 if (outputFile.isFile()) {
  270.                     if (outputFile.canWrite()) {
  271.                         try (FileWriter writer = new FileWriter(outputFile)) {
  272.                             writer.write(text);
  273.                         }
  274.                     }
  275.                     else {
  276.                         System.out.println("Файл доступен только для чтения!");
  277.                         isFileIncorrect = true;
  278.                     }
  279.                 }
  280.                 else {
  281.                     outputFile.createNewFile();
  282.                     try (FileWriter writer = new FileWriter(outputFile)) {
  283.                             writer.write(text);
  284.                     }
  285.                 }
  286.             }
  287.             catch (IOException e) {
  288.                 System.out.println("Не удалось вывести в файл!");
  289.                 isFileIncorrect = true;
  290.             }
  291.         } while (isFileIncorrect);
  292.         System.out.println("Вывод данных... успешно!");
  293.     }
  294.  
  295.     public static void main(String[] args) {
  296.         String textIn, newText;
  297.  
  298.         printCondition();
  299.         textIn = inputText();
  300.         newText = createNewText(textIn);
  301.         outputText(newText);
  302.     }
  303. }
  304.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement