Advertisement
Ewerlost

Lab4_2Java

Feb 25th, 2024
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.99 KB | None | 0 0
  1.  
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.util.Scanner;
  7.  
  8. public class Main {
  9.     private static final Scanner scan = new Scanner(System.in);
  10.  
  11.     private static void printCondition() {
  12.         System.out.println("Данная программа определит номер позиции k-го вхождения строки st2 в строку st1. Если такого нет, возвратит -1.");
  13.     }
  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.  
  36.     private static String inputNum() {
  37.         int choice;
  38.         String num;
  39.  
  40.         System.out.println("Выберите вариант ввода:");
  41.         System.out.println("1.Ввод из консоли");
  42.         System.out.println("2.Ввод из файла");
  43.         choice = readNum(1, 2);
  44.  
  45.         if (choice == 1) {
  46.             num = inputNumFromConsole();
  47.         }
  48.         else {
  49.             num = inputNumFromFile();
  50.         }
  51.  
  52.         return num;
  53.     }
  54.  
  55.     private static String inputNumFromConsole() {
  56.         String num;
  57.         String enabledSimbols;
  58.         boolean isCorrect;
  59.         int index;
  60.  
  61.         enabledSimbols = "0123456789";
  62.         System.out.println("Введите число ");
  63.         do {
  64.             isCorrect = true;
  65.             num = scan.nextLine();
  66.             if (num.charAt(0) == '0') {
  67.                 isCorrect = false;
  68.                 System.out.println("Введите натуральное число!");
  69.             }
  70.             for (int i = 0; i < num.length() && isCorrect; i++) {
  71.                 index = enabledSimbols.indexOf(num.charAt(i));
  72.                 if (index == -1) {
  73.                     isCorrect = false;
  74.                     System.out.println("Введите натуральное число!");
  75.                 }
  76.             }
  77.         } while (!isCorrect);
  78.         return num;
  79.     }
  80.  
  81.     private static String inputNumFromFile() {
  82.         String pathFile;
  83.         String num;
  84.         boolean isInputFromFileSuccessfully;
  85.  
  86.         System.out.println("Данные в файле должны содержать число");
  87.         do {
  88.             System.out.print("Введите путь к файлу и его имя с его расширением:");
  89.             pathFile = scan.nextLine();
  90.             isInputFromFileSuccessfully = checkFile(pathFile);
  91.         } while(!isInputFromFileSuccessfully);
  92.  
  93.         num = readFile(pathFile);
  94.  
  95.         return num;
  96.     }
  97.  
  98.     private static boolean checkFile(String path) {
  99.         String checkNum, enabledSimbols;
  100.         File checkFile;
  101.         int index;
  102.         boolean isFileCorrect;
  103.         StringBuilder builderOfText;
  104.  
  105.         checkFile = new File(path);
  106.         isFileCorrect = true;
  107.         enabledSimbols = "0123456789";
  108.  
  109.         if (!checkFile.isFile()) {
  110.             System.out.println("Файл не найден! Пожалуйста проверьте существование файла и введите путь заново");
  111.             isFileCorrect = false;
  112.         }
  113.         if (isFileCorrect && !checkFile.canRead() ) {
  114.             System.out.println("Файл не может быть прочитан! Пожалуйста проверьте файл и введите путь заново");
  115.             isFileCorrect = false;
  116.         }
  117.         if (isFileCorrect) {
  118.             try (Scanner fileScan = new Scanner(checkFile)) {
  119.  
  120.                     checkNum = fileScan.nextLine();
  121.                     if (checkNum.isBlank()) {
  122.                         isFileCorrect = false;
  123.                         System.out.println("Файл пустой! Внесите изменения в файл и повторите попытку!");
  124.                     }
  125.                     if (fileScan.hasNext()) {
  126.                         isFileCorrect = false;
  127.                         System.out.println("Данные в файле некорректны!");
  128.                     }
  129.                 for (int i = 0; i < checkNum.length() && isFileCorrect; i++) {
  130.                     index = enabledSimbols.indexOf(checkNum.charAt(i));
  131.                     if (index == -1) {
  132.                         isFileCorrect = false;
  133.                         System.out.println("Данные в файле некорректны!");
  134.                     }
  135.                 }
  136.             }
  137.             catch (FileNotFoundException e) {
  138.                 System.out.println("Файл по данному пути не существует! Пожалуйста проверьте файл и введите путь заново");
  139.                 isFileCorrect = false;
  140.             }
  141.         }
  142.         return isFileCorrect;
  143.     }
  144.  
  145.     private static String readFile(String path) {
  146.         String num;
  147.         File file;
  148.         num = "";
  149.         file = new File(path);
  150.         try (Scanner fileScan = new Scanner(file)) {
  151.             num = fileScan.nextLine();
  152.         }
  153.         catch (FileNotFoundException e) {
  154.             System.out.println("Файл по данному пути не существует. Пожалуйста проверьте файл и введите путь заново");
  155.         }
  156.  
  157.         return num;
  158.     }
  159.  
  160.     private static boolean checkNumber(String num, int sum) {
  161.         if (num.isEmpty()) {
  162.             return (sum % 9 == 0);
  163.         }
  164.         else {
  165.             sum += Character.getNumericValue(num.charAt(0));
  166.             num = num.substring(1);
  167.             return checkNumber(num,sum);
  168.         }
  169.     }
  170.  
  171.     private static void outputAnswer(String verdict) {
  172.         int choice;
  173.         System.out.println("Выберите вариант вывода:");
  174.         System.out.println("1.Вывод в консоль");
  175.         System.out.println("2.Вывод в файл");
  176.         choice = readNum(1, 2);
  177.  
  178.         if (choice == 1) {
  179.             outputAnswerToConsole(verdict);
  180.         }
  181.         else {
  182.             outputAnswerToFile(verdict);
  183.         }
  184.     }
  185.  
  186.     private static void outputAnswerToConsole(String answer) {
  187.         System.out.print(answer);
  188.     }
  189.  
  190.     private static void outputAnswerToFile(String answer) {
  191.         String path;
  192.         boolean isFileIncorrect;
  193.  
  194.         System.out.println("Для вывода введите путь к файлу.");
  195.         System.out.println("Если файл отсутствует то он будет создан автоматически по указанному пути или в корневой папке программы (по умолчанию)");
  196.         do {
  197.             isFileIncorrect = false;
  198.             System.out.print("Введите путь к файлу и его имя c расширением: ");
  199.             path = scan.nextLine();
  200.             File outputFile = new File(path);
  201.             try {
  202.                 if (outputFile.isFile()) {
  203.                     if (outputFile.canWrite()) {
  204.                         try (FileWriter writer = new FileWriter(outputFile)) {
  205.                             writer.write(answer);
  206.                         }
  207.                     }
  208.                     else {
  209.                         System.out.println("Файл доступен только для чтения!");
  210.                         isFileIncorrect = true;
  211.                     }
  212.                 }
  213.                 else {
  214.                     outputFile.createNewFile();
  215.                     try (FileWriter writer = new FileWriter(outputFile)) {
  216.                         writer.write(answer);
  217.                     }
  218.                 }
  219.             }
  220.             catch (IOException e) {
  221.                 System.out.println("Не удалось вывести в файл!");
  222.                 isFileIncorrect = true;
  223.             }
  224.         } while (isFileIncorrect);
  225.         System.out.println("Вывод данных... успешно!");
  226.         scan.close();
  227.     }
  228.  
  229.     public static void main(String[] args) {
  230.         String num;
  231.         String answer;
  232.         int sum;
  233.         sum = 0;
  234.         printCondition();
  235.         num = inputNum();
  236.         if (checkNumber(num,sum))
  237.             answer = "Делится на 9 без остатка";
  238.         else
  239.             answer = "Не делится на 9 без остатка";
  240.         outputAnswer(answer);
  241.     }
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement