Advertisement
dxvmxnd

Untitled

Nov 13th, 2023
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.80 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5. private static final Scanner scanner = new Scanner(System.in);
  6.  
  7. public static void main(String[] args) {
  8. int[][] matrix;
  9. int maxRes;
  10.  
  11. taskEssence();
  12. matrix = sourceChoice();
  13. maxRes = matrixCout(matrix);
  14. output(maxRes);
  15. }
  16.  
  17. public static int exceptionRead(int i, int j) {
  18. boolean isIncorrect;
  19. int number;
  20.  
  21. number = 0;
  22. do {
  23. isIncorrect = false;
  24. System.out.print("Введите " + (i+1) + "," + (j+1) + " элемент матрицы: ");
  25. try {
  26. number = Integer.parseInt(scanner.nextLine());
  27. } catch (NumberFormatException exception) {
  28. System.err.println("Неверный ввод данных!");
  29. isIncorrect = true;
  30. }
  31. } while (isIncorrect);
  32.  
  33. return number;
  34. }
  35. public static void taskEssence() {
  36. System.out.println("Данная программа находит наибольшую сумму модулей элементов строк матрицы.");
  37. }
  38. public static int[][] sourceChoice() {
  39. int choiceNumber;
  40. boolean isIncorrect;
  41. int[][] matrix = new int[0][0];
  42. choiceNumber = -1;
  43.  
  44. System.out.println("Выберите, откуда будут вводиться данные: ");
  45. do {
  46. isIncorrect = false;
  47. System.out.println("Введите 0, если с консоли; 1, если с файла");
  48. try {
  49. choiceNumber = Integer.parseInt(scanner.nextLine());
  50. } catch (NumberFormatException exception) {
  51. isIncorrect = true;
  52. System.err.println("Неверный ввод данных!");
  53. }
  54. if (((choiceNumber != 0) && (choiceNumber != 1)) || (isIncorrect == true)) {
  55. isIncorrect = true;
  56. System.err.println("Число должно быть или 0, или 1");
  57. }
  58. } while (isIncorrect);
  59. if (choiceNumber == 0) {
  60. matrix = fromConsole();
  61. } else {
  62. matrix = fromFile();
  63. }
  64. return matrix;
  65. }
  66. public static int[][] fromFile() {
  67. String path;
  68. int sizeI, sizeJ;
  69. int[][] matrix;
  70.  
  71. System.out.println("При записи данных из файла, учтите, что на первой строке написано количество строк матрицы, на второй - количество столбцов, а далее с новой строки прописывается сама матрица.");
  72. path = pathChoice();
  73. sizeI = sizeRowFile(path);
  74. sizeJ = sizeColumnFile(path);
  75. matrix = new int[sizeI][sizeJ];
  76. matrix = matrixReadFile(path, sizeI, sizeJ, matrix);
  77.  
  78. return matrix;
  79. }
  80. public static String pathChoice() {
  81. String path;
  82. boolean isIncorrect;
  83.  
  84. do {
  85. isIncorrect = false;
  86. System.out.println("Введите путь к файлу: ");
  87. path = scanner.nextLine();
  88.  
  89. File file = new File(path);
  90. if (!file.exists()) {
  91. System.out.println("По указанном пути файл не найден.");
  92. isIncorrect = true;
  93. } else if (!getExtension(path).equals("txt")) {
  94. System.err.println("Ошибка, неправильный тип файла!");
  95. isIncorrect = true;
  96. }
  97. } while (isIncorrect);
  98. return path;
  99.  
  100. }
  101. public static String getExtension(String path) {
  102. int pos = path.lastIndexOf('.');
  103. if (pos <= 0) {
  104. return "";
  105. }
  106. return path.substring(pos + 1);
  107. }
  108. public static int sizeRowFile(String path) {
  109. int sizeI;
  110. boolean isIncorrect;
  111.  
  112. System.out.println("Считывание размера строк......");
  113. sizeI = 0;
  114.  
  115. isIncorrect = false;
  116. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  117. try {
  118. sizeI = Integer.parseInt(reader.readLine());
  119. } catch(NumberFormatException exception) {
  120. isIncorrect = true;
  121. }
  122. if ((sizeI < 1) || (isIncorrect == true)) {
  123. isIncorrect = true;
  124. System.out.println("Неверный ввод данных! Впишите данные с клавиатуры.");
  125. sizeI = sizeRowConsole();
  126. }
  127. else {
  128. System.out.println(sizeI);
  129. }
  130. } catch (IOException ioException) {
  131. isIncorrect = true;
  132. }
  133.  
  134.  
  135. return sizeI;
  136.  
  137. }
  138. public static int sizeColumnFile(String path) {
  139. int sizeJ;
  140. boolean isIncorrect;
  141.  
  142. System.out.println("Считывание размера строк......");
  143. sizeJ = 0;
  144.  
  145. isIncorrect = false;
  146. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  147. reader.readLine();
  148. try {
  149. sizeJ = Integer.parseInt(reader.readLine());
  150. } catch(NumberFormatException exception) {
  151. isIncorrect = true;
  152. }
  153. if ((sizeJ < 1) || (isIncorrect == true)) {
  154. isIncorrect = true;
  155. System.out.println("Неверный ввод данных! Впишите данные с клавиатуры.");
  156. sizeJ = sizeRowConsole();
  157. }
  158. else {
  159. System.out.println(sizeJ);
  160. }
  161. } catch (IOException ioException) {
  162. isIncorrect = true;
  163. }
  164.  
  165. return sizeJ;
  166.  
  167. }
  168. public static int[][] matrixReadFile(String path, int sizeI, int sizeJ, int[][] matrix) {
  169. boolean isIncorrect;
  170.  
  171. System.out.println("Считывание матрицы...");
  172.  
  173. isIncorrect = false;
  174. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  175. reader.readLine();
  176. reader.readLine();
  177. for (int i = 0; i < sizeI; i++) {
  178. String[] elements = reader.readLine().split(" ");
  179. for (int j = 0; j < sizeJ; j++) {
  180. try {
  181. matrix[i][j] = Integer.parseInt(elements[j]);
  182. } catch(NumberFormatException exception) {
  183. System.out.println("Неверный ввод данных! Запишите данные с клавиатуры.");
  184. matrix[i][j] = exceptionRead(i, j);
  185. }
  186.  
  187.  
  188. }
  189. System.out.println();
  190. }
  191. } catch (IOException ioException) {
  192. isIncorrect = true;
  193. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  194. }
  195.  
  196.  
  197. return matrix;
  198. }
  199. public static void output(int result) {
  200. String path;
  201. boolean isIncorrect;
  202.  
  203. System.out.println("Максимальная сумма модулей элементов строк: " + result);
  204. path = outputPath();
  205. do {
  206. isIncorrect = false;
  207. try (FileWriter writer = new FileWriter(path, true)) {
  208. writer.write("\nМаксимальная сумма модулей элементов строк: " + result);
  209. } catch (IOException ioException) {
  210. System.err.println("Ошибка при записи в файл");
  211. isIncorrect = true;
  212. }
  213. } while (isIncorrect);
  214. System.out.println("Данные записаны в файл.");
  215. }
  216. public static int matrixCount(int[][] matrix) {
  217. int sum = 0;
  218. int maxsum = 0;
  219.  
  220. for (int i = 0; i < matrix.length; i++) {
  221. for (int j = 0; j < matrix[0].length; j++) {
  222. sum = sum + Math.abs(matrix[i][j]);
  223. }
  224. if (sum > maxsum) {
  225. maxsum = sum;
  226. }
  227. sum = 0;
  228. }
  229.  
  230. return maxsum;
  231.  
  232. }
  233. public static String outputPath() {
  234. String path;
  235. boolean isIncorrect;
  236.  
  237. do {
  238. isIncorrect = false;
  239. System.out.println("Введите путь к файлу для вывода: ");
  240. System.out.println();
  241. path = scanner.nextLine();
  242.  
  243. File file = new File(path);
  244. if (!file.exists()) {
  245. System.out.println("По указанном пути файл не найден.");
  246. isIncorrect = true;
  247. } else if (!getExtension(path).equals("txt")) {
  248. System.err.println("Ошибка, неправильный тип файла!");
  249. isIncorrect = true;
  250. }
  251. } while (isIncorrect);
  252. return path;
  253. }
  254. public static int[][] fromConsole() {
  255. int sizeI;
  256. int sizeJ;
  257. int[][] matrix;
  258. sizeI = sizeRowConsole();
  259. sizeJ = sizeColumnConsole();
  260. matrix = new int[sizeI][sizeJ];
  261. matrix = matrixReadConsole(sizeI, sizeJ, matrix);
  262.  
  263. return matrix;
  264.  
  265. }
  266. public static int sizeRowConsole() {
  267. boolean isIncorrect;
  268. int sizeI;
  269.  
  270. sizeI = 0;
  271. do {
  272. isIncorrect = false;
  273. System.out.print("Введите количество строк: ");
  274. try {
  275. sizeI = Integer.parseInt(scanner.nextLine());
  276. if (!isIncorrect && (sizeI < 1)) {
  277. System.err.println("Неверный ввод данных!");
  278. isIncorrect = true;
  279. }
  280. } catch (NumberFormatException exception) {
  281. System.err.println("Неверный ввод данных!");
  282. isIncorrect = true;
  283. }
  284.  
  285. } while (isIncorrect);
  286.  
  287. return sizeI;
  288. }
  289. public static int sizeColumnConsole() {
  290. boolean isIncorrect;
  291. int sizeJ;
  292.  
  293. sizeJ = 0;
  294. do {
  295. isIncorrect = false;
  296. System.out.print("Введите количество столбцов: ");
  297. try {
  298. sizeJ = Integer.parseInt(scanner.nextLine());
  299. if (!isIncorrect && (sizeJ < 1)) {
  300. System.err.println("Неверный ввод данных!");
  301. isIncorrect = true;
  302. }
  303. } catch (NumberFormatException exception) {
  304. System.err.println("Неверный ввод данных!");
  305. isIncorrect = true;
  306. }
  307.  
  308. } while (isIncorrect);
  309.  
  310. return sizeJ;
  311. }
  312. public static int[][] matrixReadConsole(int sizeI, int sizeJ, int[][] matrix) {
  313. boolean isIncorrect;
  314. for (int i = 0; i < sizeI; i++) {
  315. for (int j = 0; j < sizeJ; j++) {
  316. do {
  317. isIncorrect = false;
  318. System.out.print("Введите элемент " + (i+1) + "," + (j+1) + " элемент матрицы: ");
  319. try {
  320. matrix[i][j] = Integer.parseInt(scanner.nextLine());
  321. } catch (NumberFormatException exception) {
  322. System.err.println("Неверный ввод данных!");
  323. isIncorrect = true;
  324. }
  325.  
  326. } while (isIncorrect);
  327. }
  328. }
  329. return matrix;
  330.  
  331. }
  332. }
  333.  
  334.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement