Advertisement
dxvmxnd

Untitled

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