Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.NoSuchElementException;
- import java.util.Scanner;
- public class Main {
- public static final Scanner consoleScan = new Scanner(System.in);
- public static void main(String[] args) {
- int inputChoice, outputChoice;
- int[] arr;
- System.out.println("Программа сортирует массив методом простых вставок.\n" + "Диапазон значений для ввода количества элементов массива - от 1 до 10.\n"
- + "Диапазон для ввода значений - от -1000000 до 1000000.");
- System.out.println("Выберите вариант ввода\n" + "1. Через консоль\n" +
- "2. Из файла");
- inputChoice = inputInt(1, 2);
- arr = inputArr(inputChoice);
- System.out.println("Выберите вариант вывода:\n" + "1. Через консоль\n" +
- "2. В файл");
- outputChoice = inputInt(1, 2);
- sortArr(arr);
- outputAnswer(outputChoice, arr);
- consoleScan.close();
- }
- public static int inputInt(int min, int max) {
- int num = 0;
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- System.out.print("Введите число: ");
- try {
- num = Integer.parseInt(consoleScan.nextLine());
- } catch (NumberFormatException e) {
- System.out.println("Вы ввели некорректные данные. Попробуйте снова.");
- isNotCorrect = true;
- }
- if (!isNotCorrect && (num < min || num > max)) {
- System.out.println("Введено значение не входящее в диапазон допустимых значений");
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- return num;
- }
- public static int[] inputArr(int choice) {
- boolean isFileIncorrect;
- int[] arr = null;
- String filePath;
- File inputFile;
- if (choice == 1) {
- arr = inputArrFromConsole();
- }
- if (choice == 2) {
- do{
- System.out.println("Введите путь к файлу с указанием его расширения");
- filePath = consoleScan.nextLine();
- inputFile = new File(filePath);
- isFileIncorrect = checkFile(inputFile);
- } while (isFileIncorrect);
- arr = inputArrFromFile(inputFile);
- }
- return arr;
- }
- public static int[] inputArrFromConsole() {
- final int MIN_ARR_LENGTH = 1, MAX_ARR_LENGTH = 10,
- MIN_ARR_VALUE = -1000000, MAX_ARR_VALUE = 1000000;
- int len;
- System.out.println("Число элементов массива: ");
- len = inputInt(MIN_ARR_LENGTH, MAX_ARR_LENGTH);
- int[] arr = new int[len];
- System.out.println("Введите массив для сортировки");
- for (int i = 0; i < arr.length; i++) {
- System.out.println("Введите элемент массива " + (i + 1) + ": ");
- arr[i] = inputInt(MIN_ARR_VALUE, MAX_ARR_VALUE);
- }
- return arr;
- }
- public static boolean checkFile(File file){
- final int MIN_ARR_LENGTH = 1, MAX_ARR_LENGTH = 10,
- MIN_COORD_VALUE = -1000000, MAX_COORD_VALUE = 1000000;
- int char1, len;
- boolean isFileIncorrect = false;
- if (!file.isFile()){
- System.out.println("Файла по данному пути не существует. Пожалуйста проверьте существование файла и введите путь заново");
- isFileIncorrect = true;
- }
- if (!isFileIncorrect && !file.canRead() ){
- System.out.println("Файл по данному пути не может быть прочитан. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- if (!isFileIncorrect){
- try (Scanner fileScan = new Scanner(file)) {
- len = fileScan.nextInt();
- if (len <= MAX_ARR_LENGTH && len >= MIN_ARR_LENGTH) {
- for (int i = 0; i < len; i++) {
- char1 = fileScan.nextInt();
- if ((char1 > MAX_COORD_VALUE || char1 < MIN_COORD_VALUE)) {
- System.out.println("В файле данные выходят за пределы допустимых значений. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- }
- } else {
- System.out.println("В файле данные выходят за пределы допустимых значений. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- if (!isFileIncorrect && fileScan.hasNext()){
- System.out.println("В файле данные представлены в неправильном формате. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- } catch (FileNotFoundException e) {
- System.out.println("Файл по данному пути не существует. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- } catch (NoSuchElementException e) {
- System.out.println("В файле данные представлены в неправильном формате. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- }
- return isFileIncorrect;
- }
- public static int[] inputArrFromFile(File file){
- int[] arr = null;
- try (Scanner fileScan = new Scanner(file)) {
- int len = fileScan.nextInt();
- arr = new int[len];
- for (int i = 0; i < len; i++) {
- arr[i] = fileScan.nextInt();
- }
- } catch (IOException e) {
- System.out.println("Не удалось считать файл");
- }
- return arr;
- }
- public static void sortArr(int[] arr) {
- int i, j, buff;
- for (i = 1; i < arr.length; i++) {
- buff = arr[i];
- j = i;
- while ((j > 0) && (arr[j - 1] > buff)) {
- arr[j] = arr[j - 1];
- j--;
- }
- arr[j] = buff;
- }
- }
- public static void outputAnswer(int choice, int[] arr) {
- String filePath;
- int i;
- boolean isFileIncorrect = false;
- if (choice == 1) {
- System.out.println("Результат:");
- for (i = 0; i < arr.length; i++){
- System.out.print(arr[i] + " ");
- }
- } else {
- do {
- System.out.println("Введите путь к файлу с расширением");
- filePath = consoleScan.nextLine();
- File outputFile = new File(filePath);
- try {
- if (outputFile.isFile()) {
- if (outputFile.canWrite()) {
- try (FileWriter writer = new FileWriter(outputFile)) {
- writer.write("Результат:\n");
- for (i = 0; i < arr.length; i++){
- writer.write(arr[i] + " ");
- }
- }
- } else {
- System.out.println("Файл не возможно прочитать");
- isFileIncorrect = true;
- }
- } else {
- outputFile.createNewFile();
- try (FileWriter writer = new FileWriter(outputFile)) {
- writer.write("Результат:\n");
- for (i = 0; i < arr.length; i++){
- writer.write(arr[i] + " ");
- }
- }
- }
- } catch (IOException e) {
- System.out.println("Не удалось вывести в файл");
- }
- } while (isFileIncorrect);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement