Advertisement
dxvmxnd

Untitled

Oct 30th, 2024 (edited)
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.21 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. double[][] matrix;
  9. int resultOfCalc;
  10.  
  11. taskEssence();
  12. matrix = sourceChoice();
  13. resultOfCalc = countOfRows(matrix);
  14. output(resultOfCalc);
  15. }
  16. public static double exceptionRead(int i, int j) {
  17. boolean isIncorrect;
  18. double number;
  19.  
  20. number = 0;
  21. do {
  22. isIncorrect = false;
  23. System.out.print("Введите " + (i+1) + "," + (j+1) + " элемент матрицы: ");
  24. try {
  25. number = Double.parseDouble(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("Данная программа находит количество строк, в которой модуль суммы элементов больше 1.");
  36. }
  37. public static double[][] sourceChoice() {
  38. int choiceNumber;
  39. boolean isIncorrect;
  40. double[][] matrix = new double[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 double[][] fromFile() {
  66. String path;
  67. int size;
  68. double[][] matrix;
  69.  
  70. System.out.println("При записи данных из файла, учтите, что на первой строке написан порядок матрицы, а далее с новой строки прописывается сама матрица.");
  71. path = pathChoice();
  72. size = sizeFromFile(path);
  73. matrix = new double[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 double[][] matrixReadFile(String path, int size, double[][] 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] = Double.parseDouble(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 result) {
  165. String path;
  166. boolean isIncorrect;
  167.  
  168. System.out.println("Количество строк, сумма модулей элементов которой больше 1: " + result);
  169. path = outputPath();
  170. do {
  171. isIncorrect = false;
  172. try (FileWriter writer = new FileWriter(path, true)) {
  173. writer.write("\nКоличество строк, сумма модулей элементов которой больше 1: " + result);
  174. } catch (IOException ioException) {
  175. System.err.println("Ошибка при записи в файл");
  176. isIncorrect = true;
  177. }
  178. } while (isIncorrect);
  179. System.out.println("Данные записаны в файл.");
  180. }
  181. public static int countOfRows(double[][] matrix) {
  182. int countOfRows;
  183. int sumOfRow;
  184.  
  185. countOfRows = 0;
  186. for (int i = 0; i < matrix.length; i++) {
  187. sumOfRow = 0;
  188. for (int j = 0; j < matrix.length; j++) {
  189. sumOfRow += Math.abs(matrix[i][j]);
  190. }
  191. if(sumOfRow > 1) {
  192. countOfRows++;
  193. }
  194. }
  195.  
  196. return countOfRows;
  197.  
  198. }
  199. public static String outputPath() {
  200. String path;
  201. boolean isIncorrect;
  202.  
  203. do {
  204. isIncorrect = false;
  205. System.out.println("Введите путь к файлу для вывода: ");
  206. System.out.println();
  207. path = scanner.nextLine();
  208.  
  209. File file = new File(path);
  210. if (!file.exists()) {
  211. System.out.println("По указанном пути файл не найден.");
  212. isIncorrect = true;
  213. } else if (!getExtension(path).equals("txt")) {
  214. System.err.println("Ошибка, неправильный тип файла!");
  215. isIncorrect = true;
  216. }
  217. } while (isIncorrect);
  218. return path;
  219. }
  220. public static double[][] fromConsole() {
  221. int size;
  222. double[][] matrix;
  223. size = sizeFromConsole();
  224. matrix = new double[size][size];
  225. matrix = matrixReadConsole(size, matrix);
  226. outputMatrix(matrix, size);
  227.  
  228. return matrix;
  229.  
  230. }
  231. public static int sizeFromConsole() {
  232. boolean isIncorrect;
  233. int size;
  234.  
  235. size = 0;
  236. do {
  237. isIncorrect = false;
  238. System.out.print("Введите порядок матрицы: ");
  239. try {
  240. size = Integer.parseInt(scanner.nextLine());
  241. if (!isIncorrect && (size < 1)) {
  242. System.err.println("Неверный ввод данных!");
  243. isIncorrect = true;
  244. }
  245. } catch (NumberFormatException exception) {
  246. System.err.println("Неверный ввод данных!");
  247. isIncorrect = true;
  248. }
  249.  
  250. } while (isIncorrect);
  251.  
  252. return size;
  253. }
  254. public static double[][] matrixReadConsole(int size, double[][] matrix) {
  255. boolean isIncorrect;
  256. for (int i = 0; i < size; i++) {
  257. for (int j = 0; j < size; j++) {
  258. do {
  259. isIncorrect = false;
  260. System.out.print("Введите элемент " + (i+1) + "," + (j+1) + " элемент матрицы: ");
  261. try {
  262. matrix[i][j] = Double.parseDouble(scanner.nextLine());
  263. } catch (NumberFormatException exception) {
  264. System.err.println("Неверный ввод данных!");
  265. isIncorrect = true;
  266. }
  267.  
  268. } while (isIncorrect);
  269. }
  270. }
  271. return matrix;
  272.  
  273. }
  274. public static void outputMatrix(double[][] matrix, int size) {
  275. System.out.println("Введенная матрица:");
  276. for (int i = 0; i < size; i++) {
  277. for (int j = 0; j < size; j++) {
  278. System.out.print(matrix[i][j]);
  279. System.out.print(" ");
  280. }
  281. System.out.println();
  282. }
  283. }
  284. }
  285.  
  286.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement