Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.Scanner;
- public class Main {
- private static final Scanner scanner = new Scanner(System.in);
- public static void main(String[] args) {
- int[][] matrix;
- int maxRes;
- taskEssence();
- matrix = sourceChoice();
- maxRes = matrixCout(matrix);
- output(maxRes);
- }
- public static int exceptionRead(int i, int j) {
- boolean isIncorrect;
- int number;
- number = 0;
- do {
- isIncorrect = false;
- System.out.print("Введите " + (i+1) + "," + (j+1) + " элемент матрицы: ");
- try {
- number = Integer.parseInt(scanner.nextLine());
- } catch (NumberFormatException exception) {
- System.err.println("Неверный ввод данных!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return number;
- }
- public static void taskEssence() {
- System.out.println("Данная программа находит наибольшую сумму модулей элементов строк матрицы.");
- }
- public static int[][] sourceChoice() {
- int choiceNumber;
- boolean isIncorrect;
- int[][] matrix = new int[0][0];
- choiceNumber = -1;
- System.out.println("Выберите, откуда будут вводиться данные: ");
- do {
- isIncorrect = false;
- System.out.println("Введите 0, если с консоли; 1, если с файла");
- try {
- choiceNumber = Integer.parseInt(scanner.nextLine());
- } catch (NumberFormatException exception) {
- isIncorrect = true;
- System.err.println("Неверный ввод данных!");
- }
- if (((choiceNumber != 0) && (choiceNumber != 1)) || (isIncorrect == true)) {
- isIncorrect = true;
- System.err.println("Число должно быть или 0, или 1");
- }
- } while (isIncorrect);
- if (choiceNumber == 0) {
- matrix = fromConsole();
- } else {
- matrix = fromFile();
- }
- return matrix;
- }
- public static int[][] fromFile() {
- String path;
- int sizeI, sizeJ;
- int[][] matrix;
- System.out.println("При записи данных из файла, учтите, что на первой строке написано количество строк матрицы, на второй - количество столбцов, а далее с новой строки прописывается сама матрица.");
- path = pathChoice();
- sizeI = sizeRowFile(path);
- sizeJ = sizeColumnFile(path);
- matrix = new int[sizeI][sizeJ];
- matrix = matrixReadFile(path, sizeI, sizeJ, matrix);
- return matrix;
- }
- public static String pathChoice() {
- String path;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("Введите путь к файлу: ");
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("По указанном пути файл не найден.");
- isIncorrect = true;
- } else if (!getExtension(path).equals("txt")) {
- System.err.println("Ошибка, неправильный тип файла!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- public static String getExtension(String path) {
- int pos = path.lastIndexOf('.');
- if (pos <= 0) {
- return "";
- }
- return path.substring(pos + 1);
- }
- public static int sizeRowFile(String path) {
- int sizeI;
- boolean isIncorrect;
- System.out.println("Считывание размера строк......");
- sizeI = 0;
- isIncorrect = false;
- try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
- try {
- sizeI = Integer.parseInt(reader.readLine());
- } catch(NumberFormatException exception) {
- isIncorrect = true;
- }
- if ((sizeI < 1) || (isIncorrect == true)) {
- isIncorrect = true;
- System.out.println("Неверный ввод данных! Впишите данные с клавиатуры.");
- sizeI = sizeRowConsole();
- }
- else {
- System.out.println(sizeI);
- }
- } catch (IOException ioException) {
- isIncorrect = true;
- }
- return sizeI;
- }
- public static int sizeColumnFile(String path) {
- int sizeJ;
- boolean isIncorrect;
- System.out.println("Считывание размера строк......");
- sizeJ = 0;
- isIncorrect = false;
- try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
- reader.readLine();
- try {
- sizeJ = Integer.parseInt(reader.readLine());
- } catch(NumberFormatException exception) {
- isIncorrect = true;
- }
- if ((sizeJ < 1) || (isIncorrect == true)) {
- isIncorrect = true;
- System.out.println("Неверный ввод данных! Впишите данные с клавиатуры.");
- sizeJ = sizeRowConsole();
- }
- else {
- System.out.println(sizeJ);
- }
- } catch (IOException ioException) {
- isIncorrect = true;
- }
- return sizeJ;
- }
- public static int[][] matrixReadFile(String path, int sizeI, int sizeJ, int[][] matrix) {
- boolean isIncorrect;
- System.out.println("Считывание матрицы...");
- isIncorrect = false;
- try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
- reader.readLine();
- reader.readLine();
- for (int i = 0; i < sizeI; i++) {
- String[] elements = reader.readLine().split(" ");
- for (int j = 0; j < sizeJ; j++) {
- try {
- matrix[i][j] = Integer.parseInt(elements[j]);
- } catch(NumberFormatException exception) {
- System.out.println("Неверный ввод данных! Запишите данные с клавиатуры.");
- matrix[i][j] = exceptionRead(i, j);
- }
- }
- System.out.println();
- }
- } catch (IOException ioException) {
- isIncorrect = true;
- System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
- }
- return matrix;
- }
- public static void output(int result) {
- String path;
- boolean isIncorrect;
- System.out.println("Максимальная сумма модулей элементов строк: " + result);
- path = outputPath();
- do {
- isIncorrect = false;
- try (FileWriter writer = new FileWriter(path, true)) {
- writer.write("\nМаксимальная сумма модулей элементов строк: " + result);
- } catch (IOException ioException) {
- System.err.println("Ошибка при записи в файл");
- isIncorrect = true;
- }
- } while (isIncorrect);
- System.out.println("Данные записаны в файл.");
- }
- public static int matrixCout(int[][] matrix) {
- int sum = 0;
- int maxsum = 0;
- for (int i = 0; i < matrix.length; i++) {
- for (int j = 0; j < matrix[0].length; j++) {
- sum = sum + Math.abs(matrix[i][j]);
- }
- if (sum > maxsum) {
- maxsum = sum;
- }
- sum = 0;
- }
- return maxsum;
- }
- public static String outputPath() {
- String path;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("Введите путь к файлу для вывода: ");
- System.out.println();
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("По указанном пути файл не найден.");
- isIncorrect = true;
- } else if (!getExtension(path).equals("txt")) {
- System.err.println("Ошибка, неправильный тип файла!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- public static int[][] fromConsole() {
- int sizeI;
- int sizeJ;
- int[][] matrix;
- sizeI = sizeRowConsole();
- sizeJ = sizeColumnConsole();
- matrix = new int[sizeI][sizeJ];
- matrix = matrixReadConsole(sizeI, sizeJ, matrix);
- return matrix;
- }
- public static int sizeRowConsole() {
- boolean isIncorrect;
- int sizeI;
- sizeI = 0;
- do {
- isIncorrect = false;
- System.out.print("Введите количество строк: ");
- try {
- sizeI = Integer.parseInt(scanner.nextLine());
- if (!isIncorrect && (sizeI < 1)) {
- System.err.println("Неверный ввод данных!");
- isIncorrect = true;
- }
- } catch (NumberFormatException exception) {
- System.err.println("Неверный ввод данных!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return sizeI;
- }
- public static int sizeColumnConsole() {
- boolean isIncorrect;
- int sizeJ;
- sizeJ = 0;
- do {
- isIncorrect = false;
- System.out.print("Введите количество столбцов: ");
- try {
- sizeJ = Integer.parseInt(scanner.nextLine());
- if (!isIncorrect && (sizeJ < 1)) {
- System.err.println("Неверный ввод данных!");
- isIncorrect = true;
- }
- } catch (NumberFormatException exception) {
- System.err.println("Неверный ввод данных!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return sizeJ;
- }
- public static int[][] matrixReadConsole(int sizeI, int sizeJ, int[][] matrix) {
- boolean isIncorrect;
- for (int i = 0; i < sizeI; i++) {
- for (int j = 0; j < sizeJ; j++) {
- do {
- isIncorrect = false;
- System.out.print("Введите элемент " + (i+1) + "," + (j+1) + " элемент матрицы: ");
- try {
- matrix[i][j] = Integer.parseInt(scanner.nextLine());
- } catch (NumberFormatException exception) {
- System.err.println("Неверный ввод данных!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- }
- }
- return matrix;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement