Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.Scanner;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- public class Main {
- public static Scanner scan = new Scanner(System.in);
- static boolean isFileCorrect(String path, int size) throws IOException {
- int totalCount = 0;
- boolean isCorrect;
- FileReader reader = new FileReader(path);
- Scanner scanner = new Scanner(reader);
- isCorrect = true;
- while (scanner.hasNextLine() && isCorrect) {
- Matcher matcher = Pattern.compile("\\d+").matcher(scanner.nextLine());
- int iCount = 0;
- while (matcher.find()) {
- iCount++;
- totalCount++;
- }
- if (iCount != size && totalCount != size * size) {
- isCorrect = false;
- }
- }
- scanner.close();
- reader.close();
- return isCorrect;
- }
- static String FilePath(int order) throws IOException {
- String path;
- boolean isIncorrect = true;
- do {
- System.out.println("Введите абсолютный путь к файлу: ");
- path = scan.nextLine();
- File matrixFile = new File(path);
- if (!matrixFile.exists()) {
- System.out.println("Файл не найден. Проверьте введённый путь.");
- } else {
- if (isFileCorrect(path, order)) {
- isIncorrect = false;
- } else {
- System.out.println("Проверьте данные в файле. Это должны быть числа, записанные в виде матрицы. Порядок матрицы должен соответствовать введённому.");
- }
- }
- } while (isIncorrect);
- return path;
- }
- static int InputOrder() {
- int order = 0;
- boolean IsNotCorrect;
- do {
- System.out.println("Введите порядок матрицы: ");
- IsNotCorrect = false;
- try {
- order = Integer.parseInt(scan.nextLine());
- } catch (Exception e) {
- IsNotCorrect = true;
- System.out.println("Порядок матрицы должен быть числом.");
- }
- if ((((order < 1) || (order > 10000))) && !IsNotCorrect) {
- System.out.println("Размер матрицы должен принадлежать промежутку от 1 до 10000");
- IsNotCorrect = true;
- }
- } while (IsNotCorrect);
- return order;
- }
- static int[][] MatrixCreate(int order) {
- int[][] matrix = new int[order][order];
- return matrix;
- }
- static int[][] FileToMatrix(int[][] matrix, int order, String path) throws IOException {
- FileReader matrixFile = new FileReader(path);
- Scanner sc = new Scanner (matrixFile);
- for (int i = 0; i < order; i++) {
- for (int j = 0; j < order; j++) {
- matrix[i][j] = sc.nextInt();
- }
- }
- System.out.println();
- return matrix;
- }
- static void PrintMatrix(int[][] matrix, int order) {
- for (int i = 0; i < order; i++) {
- for (int j = 0; j < order; j++) {
- System.out.printf("%6d", matrix[i][j]);
- }
- System.out.println();
- }
- System.out.println();
- }
- static void Condition(int[][] matrix, int order, int[] zero) {
- for (int i = 0; i < order; i++) {
- zero[i] = 1;
- System.out.printf("%6d", zero[i]);
- }
- System.out.println();
- for (int i = 0; i < order; i++) {
- for (int j = 0; j < order; j++) {
- System.out.printf("%6d", matrix[i][j]);
- }
- System.out.println();
- }
- for (int i = 0; i < order; i++) {
- System.out.printf("%6d", zero[i]);
- }
- System.out.println();
- System.out.println();
- }
- static String Output() {
- String patho;
- boolean isIncorrect;
- isIncorrect = true;
- do {
- System.out.println("Введите директорию, в которую хотите сохранить матрицу: ");
- patho = scan.nextLine();
- File outputDirectory = new File(patho);
- if (outputDirectory.isDirectory() && outputDirectory.exists()) {
- isIncorrect = false;
- } else {
- System.out.println("Такой директории не существует. Попробуйте ещё раз.");
- }
- } while (isIncorrect);
- return patho;
- }
- static void ConditionToFile(int[][] matrix, int order, int[] zero) throws IOException {
- String patho;
- patho = Output();
- FileWriter myWriter = new FileWriter(patho + "output.txt");
- for (int i = 0; i < order; i++) {
- zero[i] = 1;
- myWriter.write(String.format("%6d", zero[i]));
- }
- myWriter.write("\n");
- for (int i = 0; i < order; i++) {
- for (int j = 0; j < order; j++) {
- myWriter.write(String.format("%6d", matrix[i][j]));
- }
- myWriter.write("\n");
- }
- for (int i = 0; i < order; i++) {
- zero[i] = 1;
- myWriter.write(String.format("%6d", zero[i]));
- }
- myWriter.write("\n");
- myWriter.close();
- System.out.println("Матрица сохранена по указанному пути.");
- System.out.println();
- }
- public static void main(String[] args) throws IOException {
- int order;
- int[][] matrix;
- String path;
- order = InputOrder();
- int[] zero = new int[order];
- path = FilePath(order);
- matrix = MatrixCreate(order);
- matrix = FileToMatrix(matrix, order, path);
- System.out.println("Матрица до выполнения условия:");
- PrintMatrix(matrix, order);
- System.out.println("Матрица после выполнения условия:");
- Condition(matrix, order, zero);
- ConditionToFile(matrix, order, zero);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement