Advertisement
dxvmxnd

Untitled

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