Advertisement
THOMAS_SHELBY_18

Lab3_1(JAVA without file)

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