Advertisement
Vladislav8653

laba_3_1_java

Nov 27th, 2022 (edited)
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.26 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.lang.String;
  3. import java.io.*;
  4. public class Main {
  5.     private static final Scanner scanner = new Scanner(System.in);
  6.     private static final String[] abc = new String[]{"аб", "бв", "вг", "гд", "де", "её", "ёж", "жз", "зи", "ий", "йк", "кл", "лм", "мн", "но", "оп", "пр", "рс", "ст", "ту", "уф", "фх", "хц", "цч", "чш", "шщ", "щъ", "ъы", "ыь", "ьэ", "эю", "юя"};
  7.  
  8.     public static void main(String[] args) {
  9.         System.out.println("For pairs of adjacent letters (Cyrillic) occurring in a given text, indicate how many times each of these two-letter combinations occurs.");
  10.         System.out.println("Enter type of input. " + '\n' + "1 is console input, 0 is file input.");
  11.         boolean chose = choose();
  12.         String strInput;
  13.         String path;
  14.         if (chose) {
  15.             System.out.println("Input string without spaces:");
  16.             strInput = consoleInputString();
  17.         } else {
  18.             path = inputFilePath();
  19.             strInput = FileInputString(path);
  20.         }
  21.         int[] repeat = findRepetition(strInput);
  22.         String[] combination = findPairs(strInput);
  23.         System.out.println("Enter type of output. " + '\n' + "1 is console output, 0 is file output.");
  24.         chose = choose();
  25.         if (chose) {
  26.             consoleOutput(repeat, combination);
  27.         } else {
  28.             path = inputFilePath();
  29.             fileOutput(path, repeat, combination);
  30.         }
  31.     }
  32.  
  33.     private static boolean choose() {
  34.         int inputNumber = 0;
  35.         boolean isIncorrect;
  36.         final int MIN_NUM = 0;
  37.         final int MAX_NUM = 1;
  38.         do {
  39.             isIncorrect = false;
  40.             try {
  41.                 inputNumber = Integer.parseInt(scanner.nextLine());
  42.             } catch (Exception e) {
  43.                 isIncorrect = true;
  44.                 System.out.println("Please, enter a number.");
  45.             }
  46.             if (!isIncorrect && (inputNumber < MIN_NUM || inputNumber > MAX_NUM)) {
  47.                 System.out.println("You are out of input range!:");
  48.                 isIncorrect = true;
  49.  
  50.             }
  51.         } while (isIncorrect);
  52.         if (inputNumber == 1)
  53.             return true;
  54.         else
  55.             return false;
  56.     }
  57.     //console
  58.     private static String consoleInputString() {
  59.         String strInput = "";
  60.         boolean isIncorrect;
  61.         do {
  62.             isIncorrect = false;
  63.             try {
  64.                 strInput = scanner.nextLine();
  65.             } catch (Exception e) {
  66.                 isIncorrect = true;
  67.                 System.out.println("Check input data.");
  68.             }
  69.         } while (isIncorrect);
  70.         return strInput;
  71.     }
  72.  
  73.     private static int[] findRepetition(String strInput) {
  74.         int counter = 0;
  75.         final int SIZE = 32;
  76.         int[] repeat = new int[SIZE];
  77.         int i = 0;
  78.         String strForTest;
  79.         int whereIsPair;
  80.         for (int j = 0; j < abc.length; j++) {
  81.             strForTest = strInput;
  82.             do {
  83.                 if (strForTest.contains(abc[j]) || strForTest.contains(abc[j].toUpperCase())) {
  84.                     counter++;
  85.                     whereIsPair = strForTest.indexOf(abc[j]);
  86.                     strForTest = strForTest.substring(whereIsPair + 1);
  87.                 }
  88.             } while (strForTest.contains(abc[j]));
  89.             if (counter != 0) {
  90.                 repeat[i] = counter;
  91.                 i++;
  92.             }counter = 0;
  93.         }
  94.         return repeat;
  95.     }
  96.  
  97.     private static String[] findPairs(String strInput) {
  98.         int counter = 0;
  99.         final int SIZE = 32;
  100.         String[] combination = new String[SIZE];
  101.         int i = 0;
  102.         String strForTest;
  103.         int whereIsPair;
  104.         for (int j = 0; j < abc.length; j++) {
  105.             strForTest = strInput;
  106.             do {
  107.                 if (strForTest.contains(abc[j]) || strForTest.contains(abc[j].toUpperCase())) {
  108.                     counter++;
  109.                     whereIsPair = strForTest.indexOf(abc[j]);
  110.                     strForTest = strForTest.substring(whereIsPair + 1);
  111.                 }
  112.             } while (strForTest.contains(abc[j]));
  113.             if (counter != 0) {
  114.                 combination[i] = abc[j];
  115.                 i++;
  116.             }
  117.             counter = 0;
  118.         }
  119.         return combination;
  120.     }
  121.  
  122.     private static int check (int[] repeat) {
  123.         int counter = 0;
  124.         final int SIZE = 32;
  125.         for (int i = 0; i < repeat.length; i++) {
  126.             if (repeat[i] == 0)
  127.                 counter++;
  128.         }
  129.         if (counter == SIZE)
  130.             System.out.println("There are no pairs:(");
  131.         return counter;
  132.     }
  133.  
  134.     private static void consoleOutput(int[] repeat, String[] combination) {
  135.         int counter = check(repeat);
  136.         final int SIZE = 32;
  137.         for (int i = 0; i < repeat.length; i++) {
  138.             if (repeat[i] != 0 && counter != SIZE)
  139.                 System.out.println(combination[i] + " - " + repeat[i] + " times");
  140.         }
  141.     }
  142.  
  143.     //files
  144.     private static String inputFilePath() {
  145.         String path;
  146.         boolean isIncorrect;
  147.         do {
  148.             isIncorrect = false;
  149.             System.out.println("Input file path:");
  150.             path = scanner.nextLine();
  151.             File file = new File(path);
  152.             if (!file.exists()) {
  153.                 System.out.println("Wrong way to file.");
  154.                 isIncorrect = true;
  155.             }
  156.             if (!file.canRead() && file.exists()) {
  157.                 System.out.println("Impossible to read a file.");
  158.                 isIncorrect = true;
  159.             }
  160.             if (!file.canWrite() && file.canRead()) {
  161.                 System.out.println("Impossible to write a file.");
  162.                 isIncorrect = true;
  163.             }
  164.         } while (isIncorrect);
  165.         return path;
  166.     }
  167.  
  168.     private static String FileInputString(String path) {
  169.         String strInput = "";
  170.         boolean isIncorrect;
  171.         do {
  172.             isIncorrect = false;
  173.             try {
  174.                 Scanner fileScanner = new Scanner(new File(path));
  175.                 strInput = fileScanner.nextLine();
  176.             } catch (Exception q) {
  177.                 isIncorrect = true;
  178.                 System.out.println("Check file");
  179.                 path = inputFilePath();
  180.             }
  181.         } while (isIncorrect);
  182.         return strInput;
  183.     }
  184.  
  185.     private static void fileOutput(String path, int[] repeat, String[] combination) {
  186.         boolean isIncorrect;
  187.         do {
  188.             isIncorrect = false;
  189.             try {
  190.                 FileWriter writer = new FileWriter(path);
  191.                 for (int i = 0; i < repeat.length; i++) {
  192.                     if (repeat[i] != 0)
  193.                         writer.write(combination[i] + " - " + repeat[i] + " times");
  194.                     writer.write('\n');
  195.                 }
  196.                 writer.close();
  197.             } catch (IOException e) {
  198.                 isIncorrect = true;
  199.                 System.out.println("Mistake of output in file. Input path.");
  200.                 path = inputFilePath();
  201.             }
  202.         } while (isIncorrect);
  203.         System.out.println("Successful output in file.");
  204.     }
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement