Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.NoSuchElementException;
- import java.util.Scanner;
- import java.io.*;
- public class Main {
- private static final Scanner scan = new Scanner(System.in);
- public static int getInt(int min, int max) {
- int n;
- boolean isNotCorrect;
- n = 0;
- do {
- isNotCorrect = false;
- try {
- n = Integer.parseInt(scan.nextLine());
- } catch (Exception err) {
- System.out.println("Вы ввели некорректные данные. Попробуйте снова");
- isNotCorrect = true;
- }
- if (!isNotCorrect && (n < min || n > max)) {
- System.out.println("Введено значение не входящее в диапазон допустимых значений");
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- return n;
- }
- public static boolean checkFile(File file) {
- int n, i;
- int[] checkArr;
- boolean isFileIncorrect = false;
- final int MAX_ARR_LENGTH = 100, MIN_ARR_LENGTH = 1, MIN_ARR_VALUE = -100, MAX_ARR_VALUE = 100;
- 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)) {
- n = Integer.parseInt(fileScan.nextLine());
- checkArr = new int[n];
- if (n <= MAX_ARR_LENGTH && n >= MIN_ARR_LENGTH) {
- i = 0;
- do {
- checkArr[i] = fileScan.nextInt();
- if (checkArr[i] > MAX_ARR_VALUE || checkArr[i] < MIN_ARR_VALUE) {
- System.out.println("Элементы последовательности не входят в диапазон допустимых значений");
- isFileIncorrect = true;
- }
- i++;
- } while (!isFileIncorrect || i < n);
- } 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 n;
- int[] arr;
- arr = null;
- try (Scanner fileScan = new Scanner(file)) {
- n = Integer.parseInt(fileScan.nextLine());
- arr = new int[n];
- for (int i = 0; i < n; i++)
- arr[i] = fileScan.nextInt();
- } catch (IOException e) {
- System.out.println("Не удалось считать данные из файла!");
- }
- return arr;
- }
- public static int[] inputArrFromConsole(int length) {
- final int MIN_ARR_VALUE = -100, MAX_ARR_VALUE = 100;
- int i;
- int[] arr;
- arr = new int [length];
- System.out.println("Введите все элементы последовательности");
- for(i = 0; i < length; i++)
- {
- System.out.println("Введите элемент последовательности №" + (i + 1) + ":");
- arr[i] = getInt(MIN_ARR_VALUE, MAX_ARR_VALUE);
- }
- return arr;
- }
- public static int[] inputArr() {
- final int MAX_ARR_LENGTH = 100, MIN_ARR_LENGTH = 1;
- int choice, n;
- int[] arr;
- arr = null;
- boolean isFileIncorrect;
- String pathFile;
- File inputFile;
- System.out.println("Выберите вариант ввода:");
- System.out.println("1.Ввод из консоли");
- System.out.println("2.Ввод из файла");
- choice = getInt(1, 2);
- if (choice == 1) {
- System.out.println("Введите длину последовательности");
- n = getInt(MIN_ARR_LENGTH, MAX_ARR_LENGTH);
- arr = inputArrFromConsole(n);
- }
- else {
- System.out.println("Данные в файле должны содержать натуральное число");
- do {
- System.out.print("Введите путь к файлу с его раcширением:");
- pathFile = scan.nextLine() ;
- inputFile = new File(pathFile);
- isFileIncorrect = checkFile(inputFile);
- } while(isFileIncorrect);
- arr = inputArrFromFile(inputFile);
- }
- return arr;
- }
- public static void outputSolution(int[] arr) {
- int choice;
- String path;
- boolean isFileIncorrect, verdict;
- System.out.println("Выберите вариант вывода: ");
- System.out.println("1.Вывод в консоль");
- System.out.println("2.Вывод в файл");
- choice = getInt(1, 2);
- verdict = checkArr(arr);
- if (choice == 1) {
- if (verdict)
- System.out.println("Последовательность является невозрастающей");
- else
- System.out.println("Последовательность не является невозрастающей");
- }
- else {
- System.out.println("Для вывода введите путь к файлу и его имя." + '\n' + "Если файл отсутствует то он будет создан автоматически по указанному пути или в корневой папке программы (по умолчанию).");
- do {
- isFileIncorrect = false;
- System.out.print("Введите путь к файлу и его имя c расширением: ");
- path = scan.nextLine();
- File outputFile = new File(path);
- try {
- if (outputFile.isFile()) {
- if (outputFile.canWrite()) {
- try (FileWriter writer = new FileWriter(outputFile)) {
- if (verdict)
- writer.write("Последовательность является невозрастающей");
- else
- writer.write("Последовательность не является невозрастающей");
- }
- } else {
- System.out.println("Файл доступен только для чтения!");
- isFileIncorrect = true;
- }
- } else {
- outputFile.createNewFile();
- try (FileWriter writer = new FileWriter(outputFile)) {
- if (verdict)
- writer.write("Число является палиндромом");
- else
- writer.write("Число не является палиндромом");
- }
- }
- }
- catch (IOException e) {
- System.out.println("Не удалось вывести в файл!");
- isFileIncorrect = true;
- }
- } while (isFileIncorrect);
- System.out.println("Вывод данных... успешно!");
- }
- }
- public static boolean checkArr(int[] arr) {
- int i;
- boolean solution;
- solution = true;
- for(i = 0; i < arr.length - 1; i++)
- if (arr[i] < arr[i+1])
- solution = false;
- return solution;
- }
- public static void main(String[] args) {
- int[] arrA;
- System.out.println("Эта программа определит, является ли заданная последовательность невозрастающей\nДиапазон для ввода числа от 1 до 1000000\n");
- arrA = inputArr();
- outputSolution(arrA);
- scan.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement