Advertisement
deced

Untitled

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