Advertisement
deced

Untitled

Dec 27th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.71 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.nio.file.Files;
  8. import java.util.Scanner;
  9. import java.util.TreeSet;
  10.  
  11. class Point {
  12. public int X;
  13. public int Y;
  14.  
  15. public Point(int x, int y) {
  16. X = x;
  17. Y = x;
  18. }
  19. }
  20.  
  21. public class Main {
  22. static Scanner scanner;
  23. static final int n = 15;
  24.  
  25.  
  26. static Point[] inputArrayFromConsole() {
  27. Point[] points = new Point[n];
  28. System.out.println("Введите абсциссы(x) точек: ");
  29. for (int i = 0; i < n; i++)
  30. points[i] = new Point(0,0);
  31. for (int i = 0; i < n; i++)
  32. points[i].X = Integer.parseInt(scanner.nextLine());
  33. System.out.println("Введите ординаты(y) точек: ");
  34. for (int i = 0; i < n; i++)
  35. points[i].Y = Integer.parseInt(scanner.nextLine());
  36. return points;
  37. }
  38.  
  39.  
  40. static Point[] inputArrayFromFile(String path) throws FileNotFoundException {
  41. File file = new File(path);
  42. Scanner fileScanner = new Scanner(file);
  43. Point[] points = new Point[n];
  44. for (int i = 0; i < n; i++)
  45. points[i] = new Point(0,0);
  46. for (int i = 0; i < n; i++)
  47. points[i].X = Integer.parseInt(fileScanner.nextLine());
  48. for (int i = 0; i < n; i++)
  49. points[i].Y = Integer.parseInt(fileScanner.nextLine());
  50. return points;
  51. }
  52.  
  53.  
  54. static byte chooseSource() {
  55. boolean isIncorrect;
  56. byte source = 0;
  57. System.out.println("Выберите, как будет осуществлятся ввод и вывод данных, через файл или консоль.");
  58. System.out.print("Пожалуйста, сделайте выбор(1 - файл; 2 - консоль): ");
  59. do {
  60. isIncorrect = false;
  61. try {
  62. source = Byte.parseByte(scanner.nextLine());
  63. } catch (Exception ex) {
  64. isIncorrect = true;
  65. System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
  66. }
  67. if (source != 1 && source != 2 && !isIncorrect) {
  68. isIncorrect = true;
  69. System.out.print("Выберете один из предложенных вариантов ответа (1 - файл; 2 - консоль): ");
  70. }
  71. } while (isIncorrect);
  72. return source;
  73. }
  74.  
  75.  
  76. static String inputPathToFile() {
  77. boolean isIncorrect;
  78. String path;
  79. do {
  80. isIncorrect = false;
  81. path = scanner.nextLine();
  82. File file = new File(path);
  83. if (!file.exists()) {
  84. isIncorrect = true;
  85. System.out.print("Файл не найден! Введите правильную ссылку: ");
  86. }
  87. } while (isIncorrect);
  88. return path;
  89. }
  90.  
  91.  
  92. static Point[] input(byte source) throws FileNotFoundException {
  93. String path;
  94. Point[] arrayOfElements = new Point[]{};
  95. switch (source) {
  96. case 1:
  97. System.out.print("Введите ссылку на файл ввода: ");
  98. path = inputPathToFile();
  99. arrayOfElements = inputArrayFromFile(path);
  100. break;
  101. case 2:
  102. arrayOfElements = inputArrayFromConsole();
  103. break;
  104. }
  105. return arrayOfElements;
  106. }
  107.  
  108.  
  109. static Point[] sortArray(Point[] arrayOfPoints) {
  110. {
  111. Point x;
  112. for (int i = 0; i < n; i++)
  113. for (int j = i + 1; j < n; j++)
  114. if (arrayOfPoints[i].X > arrayOfPoints[j].X ||
  115. ((arrayOfPoints[i].X == arrayOfPoints[j].X) && (arrayOfPoints[i].Y > arrayOfPoints[j].Y))) {
  116. x = arrayOfPoints[i];
  117. arrayOfPoints[i] = arrayOfPoints[j];
  118. arrayOfPoints[j] = x;
  119. }
  120. }
  121. return arrayOfPoints;
  122. }
  123.  
  124. static void outputArrayToConsole(Point[] arrayOfPoints, String sentence) {
  125. System.out.println(sentence);
  126. System.out.print("X:");
  127. for (int i = 0; i < n; i++)
  128. System.out.printf("%4d",arrayOfPoints[i].X );
  129. System.out.println();
  130. System.out.print("Y:");
  131. for (int i = 0; i < n; i++)
  132. System.out.printf("%4d",arrayOfPoints[i].Y);
  133. System.out.println();
  134. System.out.println();
  135. }
  136.  
  137. static void outputArrayToFile(Point[] arrayOfPoints, String sentence, String path) throws IOException {
  138. FileWriter fileWriter = new FileWriter(path);
  139. fileWriter.write(sentence);
  140. fileWriter.write("\n");
  141. fileWriter.write("X:");
  142. for (int i = 0; i < n; i++)
  143. fileWriter.write(String.format("%4d",arrayOfPoints[i].X));
  144. fileWriter.write("\n");
  145. fileWriter.write("Y:");
  146. for (int i = 0; i < n; i++)
  147. fileWriter.write(String.format("%4d",arrayOfPoints[i].Y));
  148. fileWriter.close();
  149. }
  150.  
  151.  
  152. static void output(byte source, Point[] arrayOfPoints) throws IOException {
  153. String path;
  154. switch (source) {
  155. case 1:
  156. System.out.print("Введите ссылку на файл вывода: ");
  157. path = inputPathToFile();
  158. outputArrayToFile(arrayOfPoints , "Исходный массив:", path);
  159. arrayOfPoints = sortArray(arrayOfPoints);
  160. outputArrayToFile(arrayOfPoints , "Отсортированный массив:", path);
  161. System.out.print("Данные успешно записаны в файл!");
  162. break;
  163. case 2: {
  164. outputArrayToConsole(arrayOfPoints, "Исходный массив:");
  165. arrayOfPoints = sortArray(arrayOfPoints);
  166. outputArrayToConsole(arrayOfPoints, "Отсортированный массив:");
  167. }
  168. }
  169. }
  170.  
  171.  
  172. public static void main(String[] args) throws IOException {
  173. scanner = new Scanner(System.in);
  174. System.out.println("Данная программа сортирует массив записей по первой координате. Если абсциссы некоторых точек равны, то сортирует их по ординатам.");
  175. byte source = chooseSource();
  176. Point[] arrayOfPoints = input(source);
  177. output(source, arrayOfPoints);
  178. }
  179. }
  180.  
  181.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement