Advertisement
Ewerlost

Lab3_3Java

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