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 getNum(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;
- boolean isFileIncorrect = false;
- final int MAX_NUM = 1000000, MIN_NUM = 1;
- n = 0;
- if (file.isFile()) {
- if (file.canRead()) {
- try (Scanner fileScan = new Scanner(file)) {
- n = Integer.parseInt(fileScan.nextLine());
- if (fileScan.hasNext()) {
- System.out.println("В файле данные представлены в неправильном формате. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- } catch (FileNotFoundException e) {
- System.out.println("Файл по данному пути не существует. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- } catch (NoSuchElementException e) {
- System.out.println("В файле данные представлены в неправильном формате. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- if (!isFileIncorrect && (n < MIN_NUM || n > MAX_NUM)) {
- System.out.println("В файле данные выходят за пределы допустимых значений. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- } else {
- System.out.println("Файл по данному пути не может быть прочитан. Пожалуйста проверьте файл и введите путь заново");
- isFileIncorrect = true;
- }
- } else {
- System.out.println("Файла по данному пути не существует. Пожалуйста проверьте существование файла и введите путь заново");
- isFileIncorrect = true;
- }
- return isFileIncorrect;
- }
- public static int inputNFromFile(File file) {
- int n;
- n = 0;
- try (Scanner fileScan = new Scanner(file)) {
- n = Integer.parseInt(fileScan.nextLine());
- } catch (IOException e) {
- System.out.println("Не удалось считать данные из файла!");
- }
- return n;
- }
- public static int inputNum() {
- final int MIN_NUM = 1, MAX_NUM = 1000000;
- int choice, n;
- boolean isFileIncorrect;
- String pathFile;
- File inputFile;
- System.out.println("Выберите вариант ввода:");
- System.out.println("1.Ввод из консоли");
- System.out.println("2.Ввод из файла");
- choice = getNum(1, 2);
- if (choice == 1) {
- System.out.print( "Введите натуральное число");
- n = getNum(MIN_NUM, MAX_NUM);
- }
- else {
- System.out.println("Данные в файле должны содержать натуральное число");
- do {
- System.out.print("Введите путь к файлу с его раcширением:");
- pathFile = scan.nextLine() ;
- inputFile = new File(pathFile);
- isFileIncorrect = checkFile(inputFile);
- } while(isFileIncorrect);
- n = inputNFromFile(inputFile);
- }
- return n;
- }
- public static void outputSolution(int[] A, int n) {
- int i, j, choice;
- String path, element ;
- boolean isFileIncorrect, verdict;
- System.out.println("Выберите вариант вывода: ");
- System.out.println("1.Вывод в консоль");
- System.out.println("2.Вывод в файл");
- choice = getNum(1, 2);
- verdict = check(A, n);
- 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 int analysNum(int number){
- int k;
- k = 0;
- while (number > 0)
- {
- number /= 10;
- k++;
- }
- return k;
- }
- public static void creatArr(int[] A, int sizeA, int number){
- for (int i = 0; i < sizeA; i++)
- {
- A[i] = number % 10;
- number /= 10;
- }
- }
- public static boolean check(int[] arr, int sizeArr){
- boolean solution;
- solution = true;
- for (int i = 0; i < sizeArr / 2; i++)
- if (arr[i] != arr[sizeArr - 1 - i])
- solution = false;
- return solution;
- }
- public static void main(String[] args) {
- int number, lengthA;
- System.out.println("Эта программа определит, является ли заданное натуральное число P палиндромом\nДиапазон для ввода числа от 1 до 1000000\n");
- number = inputNum();
- lengthA = analysNum(number);
- int[] A = new int[lengthA];
- creatArr(A, lengthA, number);
- outputSolution(A, lengthA);
- scan.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement