Advertisement
Ewerlost

Lab2_3(Java)

Oct 24th, 2023
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.79 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.NoSuchElementException;
  4. import java.util.Scanner;
  5. import java.io.*;
  6.  
  7.  
  8. public class Main {
  9.     private static final Scanner scan = new Scanner(System.in);
  10.  
  11.     public static int getNum(int min, int max) {
  12.         int n;
  13.         boolean isNotCorrect;
  14.         n = 0;
  15.         do {
  16.             isNotCorrect = false;
  17.             try {
  18.                 n = Integer.parseInt(scan.nextLine());
  19.             } catch (Exception err) {
  20.                 System.out.println("Вы ввели некорректные данные. Попробуйте снова");
  21.                 isNotCorrect = true;
  22.             }
  23.             if (!isNotCorrect && (n < min || n > max)) {
  24.                 System.out.println("Введено значение не входящее в диапазон допустимых значений");
  25.                 isNotCorrect = true;
  26.             }
  27.  
  28.         } while (isNotCorrect);
  29.         return n;
  30.     }
  31.  
  32.     public static boolean checkFile(File file) {
  33.         int n;
  34.         boolean isFileIncorrect = false;
  35.         final int MAX_NUM = 1000000, MIN_NUM = 1;
  36.  
  37.         n = 0;
  38.  
  39.         if (file.isFile()) {
  40.             if (file.canRead()) {
  41.                 try (Scanner fileScan = new Scanner(file)) {
  42.                     n = Integer.parseInt(fileScan.nextLine());
  43.                     if (fileScan.hasNext()) {
  44.                         System.out.println("В файле данные представлены в неправильном формате. Пожалуйста проверьте файл и введите путь заново");
  45.                         isFileIncorrect = true;
  46.                     }
  47.                 } catch (FileNotFoundException e) {
  48.                     System.out.println("Файл по данному пути не существует. Пожалуйста проверьте файл и введите путь заново");
  49.                     isFileIncorrect = true;
  50.                 } catch (NoSuchElementException e) {
  51.                     System.out.println("В файле данные представлены в неправильном формате. Пожалуйста проверьте файл и введите путь заново");
  52.                     isFileIncorrect = true;
  53.                 }
  54.  
  55.                 if (!isFileIncorrect && (n < MIN_NUM || n > MAX_NUM)) {
  56.                     System.out.println("В файле данные выходят за пределы допустимых значений. Пожалуйста проверьте файл и введите путь заново");
  57.                     isFileIncorrect = true;
  58.                 }
  59.             } else {
  60.                 System.out.println("Файл по данному пути не может быть прочитан. Пожалуйста проверьте файл и введите путь заново");
  61.                 isFileIncorrect = true;
  62.             }
  63.         } else {
  64.             System.out.println("Файла по данному пути не существует. Пожалуйста проверьте существование файла и введите путь заново");
  65.             isFileIncorrect = true;
  66.         }
  67.  
  68.         return isFileIncorrect;
  69.     }
  70.     public static int inputNFromFile(File file) {
  71.         int n;
  72.         n = 0;
  73.         try (Scanner fileScan = new Scanner(file)) {
  74.             n = Integer.parseInt(fileScan.nextLine());
  75.  
  76.         } catch (IOException e) {
  77.             System.out.println("Не удалось считать данные из файла!");
  78.         }
  79.         return n;
  80.     }
  81.  
  82.     public static int inputNum() {
  83.         final int MIN_NUM = 1, MAX_NUM = 1000000;
  84.         int choice, n;
  85.         boolean isFileIncorrect;
  86.         String pathFile;
  87.         File inputFile;
  88.  
  89.         System.out.println("Выберите вариант ввода:");
  90.         System.out.println("1.Ввод из консоли");
  91.         System.out.println("2.Ввод из файла");
  92.         choice = getNum(1, 2);
  93.  
  94.         if (choice == 1) {
  95.             System.out.print( "Введите натуральное число");
  96.             n = getNum(MIN_NUM, MAX_NUM);
  97.         }
  98.         else {
  99.             System.out.println("Данные в файле должны содержать натуральное число");
  100.             do {
  101.                 System.out.print("Введите путь к файлу с его раcширением:");
  102.                 pathFile = scan.nextLine() ;
  103.                 inputFile = new File(pathFile);
  104.                 isFileIncorrect = checkFile(inputFile);
  105.             } while(isFileIncorrect);
  106.             n = inputNFromFile(inputFile);
  107.         }
  108.         return n;
  109.     }
  110.     public static void  outputSolution(int[] A, int  n) {
  111.  
  112.         int i, j, choice;
  113.         String path, element ;
  114.         boolean isFileIncorrect, verdict;
  115.  
  116.         System.out.println("Выберите вариант вывода: ");
  117.         System.out.println("1.Вывод в консоль");
  118.         System.out.println("2.Вывод в файл");
  119.         choice = getNum(1, 2);
  120.         verdict = check(A, n);
  121.         if (choice == 1) {
  122.             if (verdict)
  123.                 System.out.println("Число является палиндромом");
  124.             else
  125.                 System.out.println("Число не является палиндромом");
  126.         }
  127.         else {
  128.             System.out.println("Для вывода введите путь к файлу и его имя." + '\n' + "Если файл отсутствует то он будет создан автоматически по указанному пути или в корневой папке программы (по умолчанию).");
  129.             do {
  130.                 isFileIncorrect = false;
  131.                 System.out.print("Введите путь к файлу и его имя c расширением: ");
  132.                 path = scan.nextLine();
  133.                 File outputFile = new File(path);
  134.                 try {
  135.                     if (outputFile.isFile()) {
  136.                         if (outputFile.canWrite()) {
  137.                             try (FileWriter writer = new FileWriter(outputFile)) {
  138.                                 if (verdict)
  139.                                     writer.write("Число является палиндромом");
  140.                                 else
  141.                                     writer.write("Число не является палиндромом");
  142.  
  143.                             }
  144.                         } else {
  145.                             System.out.println("Файл доступен только для чтения!");
  146.                             isFileIncorrect = true;
  147.                         }
  148.                     } else {
  149.                         outputFile.createNewFile();
  150.                         try (FileWriter writer = new FileWriter(outputFile)) {
  151.                             if (verdict)
  152.                                 writer.write("Число является палиндромом");
  153.                             else
  154.                                 writer.write("Число не является палиндромом");
  155.                         }
  156.                     }
  157.                 }
  158.                 catch (IOException e) {
  159.                     System.out.println("Не удалось вывести в файл!");
  160.                     isFileIncorrect = true;
  161.                 }
  162.             } while (isFileIncorrect);
  163.             System.out.println("Вывод данных... успешно!");
  164.         }
  165.     }
  166.     public static int analysNum(int number){
  167.         int k;
  168.         k = 0;
  169.         while (number > 0)
  170.         {
  171.             number /= 10;
  172.             k++;
  173.         }
  174.         return k;
  175.     }
  176.  
  177.     public static void creatArr(int[] A, int sizeA, int number){
  178.         for (int i = 0; i < sizeA; i++)
  179.         {
  180.             A[i] = number % 10;
  181.             number /= 10;
  182.         }
  183.     }
  184.  
  185.     public static boolean check(int[] arr, int sizeArr){
  186.         boolean solution;
  187.  
  188.         solution = true;
  189.         for (int i = 0; i < sizeArr / 2; i++)
  190.             if (arr[i] != arr[sizeArr - 1 - i])
  191.                 solution = false;
  192.         return solution;
  193.     }
  194.     public static void main(String[] args) {
  195.         int number, lengthA;
  196.         System.out.println("Эта программа определит, является ли заданное натуральное число P палиндромом\nДиапазон для ввода числа от 1 до 1000000\n");
  197.         number = inputNum();
  198.         lengthA = analysNum(number);
  199.         int[] A = new int[lengthA];
  200.         creatArr(A, lengthA, number);
  201.         outputSolution(A, lengthA);
  202.     scan.close();
  203.     }
  204.  
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement