Advertisement
dxvmxnd

Untitled

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