Advertisement
dxvmxnd

Untitled

Oct 30th, 2023 (edited)
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.56 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5. public static void taskEssence() {
  6. System.out.println("Данная программа находит наибольшую сумму модулей элементов строк матрицы.");
  7. }
  8. public static int[][] fromFile(){
  9. String path;
  10. int sizeI, sizeJ;
  11. int[][] matrix;
  12.  
  13. System.out.println("При записи данных из файла, учтите, что на первой строке написано количество строк матрицы, на второй - количество столбцов, а далее с новой строки прописывается сама матрица.");
  14. path = pathChoice();
  15. sizeI = sizeRowFile(path);
  16. sizeJ = sizeColumnFile(path);
  17. matrix = new int[sizeI][sizeJ];
  18.  
  19. matrix = matrixReadFile(path, sizeI, sizeJ, matrix);
  20.  
  21. return matrix;
  22. }
  23.  
  24. public static void main(String[] args) {
  25. int[][] matrix;
  26. int maxRes;
  27.  
  28. taskEssence();
  29. matrix = sourceChoice();
  30. maxRes = matrixCout(matrix);
  31. output(maxRes);
  32. }
  33. public static String getExtension(String path) {
  34. int pos = path.lastIndexOf('.');
  35. if (pos <= 0) {
  36. return "";
  37. }
  38. return path.substring(pos + 1);
  39. }
  40. public static String pathChoice() {
  41. Scanner scanner = new Scanner(System.in);
  42. String path;
  43. boolean isIncorrect;
  44.  
  45. do {
  46. isIncorrect = false;
  47. System.out.println("Введите путь к файлу: ");
  48. path = scanner.nextLine();
  49.  
  50. File file = new File(path);
  51. if (!file.exists()) {
  52. System.out.println("По указанном пути файл не найден.");
  53. isIncorrect = true;
  54. } else if (!getExtension(path).equals("txt")){
  55. System.err.println("Ошибка, неправильный тип файла!");
  56. isIncorrect = true;
  57. }
  58. } while (isIncorrect);
  59. scanner.close();
  60. return path;
  61.  
  62. }
  63. public static int sizeRowFile(String path) {
  64. int sizeI;
  65. boolean isIncorrect;
  66.  
  67. System.out.println("Считывание размера строк......");
  68. sizeI = 0;
  69.  
  70. isIncorrect = false;
  71. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  72. sizeI = Integer.parseInt(reader.readLine());
  73. } catch (IOException ioException) {
  74. isIncorrect = true;
  75. }
  76. if ((sizeI < 1) || (isIncorrect = true)) {
  77. isIncorrect = true;
  78. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  79. }
  80.  
  81.  
  82. return sizeI;
  83.  
  84. }
  85. public static int sizeColumnFile(String path) {
  86. int sizeJ;
  87. boolean isIncorrect;
  88.  
  89. System.out.println("Считывание размера строк......");
  90. sizeJ = 0;
  91.  
  92. isIncorrect = false;
  93. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  94. sizeJ = Integer.parseInt(reader.readLine());
  95. } catch (IOException ioException) {
  96. isIncorrect = true;
  97. }
  98. if ((sizeJ < 1) || (isIncorrect = true)) {
  99. isIncorrect = true;
  100. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  101. }
  102.  
  103.  
  104. return sizeJ;
  105.  
  106. }
  107. public static int[][] matrixReadFile(String path, int sizeI, int sizeJ, int[][] matrix) {
  108. boolean isIncorrect;
  109.  
  110. System.out.println("Считывание матрицы...");
  111.  
  112. isIncorrect = false;
  113. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  114. for (int i = 0; i < sizeI; i++) {
  115. String[] elements = reader.readLine().split(" ");
  116. for (int j = 0; j < sizeJ; j++) {
  117. matrix[i][j] = Integer.parseInt(elements[j]);
  118. }
  119. }
  120. } catch (IOException ioException) {
  121. isIncorrect = true;
  122. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  123. }
  124.  
  125.  
  126. return matrix;
  127. }
  128. public static int[][] sourceChoice() {
  129. Scanner scanner = new Scanner(System.in);
  130. int choiceNumber;
  131. boolean isIncorrect;
  132. int[][] matrix = new int[0][0];
  133. choiceNumber = -1;
  134.  
  135. System.out.println("Выберите, откуда будут вводиться данные: ");
  136. do {
  137. isIncorrect = false;
  138. System.out.println("Введите 0, если с консоли; 1, если с файла");
  139. try {
  140. choiceNumber = Integer.parseInt(scanner.nextLine());
  141. } catch (NumberFormatException exception) {
  142. isIncorrect = true;
  143. System.err.println("Неверный ввод данных!");
  144. }
  145. if (((choiceNumber != 0) && (choiceNumber != 1)) || (isIncorrect == true)) {
  146. isIncorrect = true;
  147. System.err.println("Число должно быть или 0, или 1");
  148. }
  149. } while(isIncorrect);
  150. if (choiceNumber == 0) {
  151. matrix = fromFile();
  152. }
  153. else {
  154. matrix = fromFile();
  155. }
  156. scanner.close();
  157. return matrix;
  158. }
  159. public static void output(int result) {
  160. String path;
  161. boolean isIncorrect;
  162.  
  163. System.out.println("Максимальная сумма модулей элементов строк: " + result);
  164. path = outputPath();
  165. do {
  166. isIncorrect = false;
  167. try (FileWriter writer = new FileWriter(path)) {
  168. writer.write("Максимальная сумма модулей элементов строк: " + result);
  169. } catch (IOException ioException) {
  170. System.err.println("Ошибка при записи в файл");
  171. isIncorrect = true;
  172. }
  173. } while (isIncorrect);
  174.  
  175.  
  176. }
  177. public static String outputPath() {
  178. Scanner scanner = new Scanner(System.in);
  179. boolean isIncorrect;
  180. String path;
  181.  
  182. do {
  183. isIncorrect = false;
  184. System.out.println("Введите путь к файлу: ");
  185. path = scanner.nextLine();
  186.  
  187. if (!new File(path).exists() || !path.toLowerCase().endsWith(".txt")) {
  188. isIncorrect = true;
  189. }
  190.  
  191. if (isIncorrect) {
  192. System.err.println("ОШИБКА! Введите корректный путь к файлу!");
  193. }
  194. } while (isIncorrect);
  195. scanner.close();
  196.  
  197. return path;
  198. }
  199. public static int matrixCout(int[][] matrix) {
  200. int sum = 0;
  201. int maxsum = 0;
  202.  
  203. for (int i = 0; i < matrix.length ; i++) {
  204. for (int j = 0; j < matrix[0].length; j++) {
  205. sum = sum + Math.abs(matrix[i][j]);
  206. }
  207. if (sum > maxsum) {
  208. maxsum = sum;
  209. }
  210. sum = 0;
  211. }
  212.  
  213. return maxsum;
  214. }
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement