Advertisement
dxvmxnd

Untitled

Mar 5th, 2024 (edited)
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.08 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.io.*;
  3.  
  4. public class Main {
  5. private static final Scanner scanner = new Scanner(System.in);
  6.  
  7. public static int countNumbersAmount(String str) {
  8. int i;
  9. int num;
  10. int j;
  11.  
  12. i = 1;
  13. num = 0;
  14. while(i < str.length()) {
  15. j =0;
  16. if((str.charAt(i) >= '0') && (str.charAt(i) <= '9')) {
  17. num++;
  18. j = i + 1;
  19. while((str.charAt(j) >= '0') && (str.charAt(j) <= '9')) {
  20. j++;
  21. }
  22. i = j;
  23. }
  24. else {
  25. i++;
  26. }
  27. }
  28.  
  29. return num;
  30. }
  31.  
  32. public static int[] addNumbersInArray(String str, int amount) {
  33. int[] arr = new int[amount];
  34. int i, j, index, number, multiplier;
  35.  
  36. i = 0;
  37. index = -1;
  38. while(i < str.length()) {
  39. number = 0;
  40. j = 0;
  41. if((str.charAt(i) >= '0') && (str.charAt(i) <= '9')) {
  42. index++;
  43. j = i + 1;
  44. number = Character.getNumericValue(str.charAt(i));
  45. multiplier = 10;
  46. while((str.charAt(j) >= '0') && (str.charAt(j) <= '9')) {
  47. number = number * 10 + Character.getNumericValue(str.charAt(j));
  48. j++;
  49. multiplier = multiplier * 10;
  50. }
  51. arr[index] = number;
  52. i = j;
  53. }
  54. else {
  55. i++;
  56. }
  57. }
  58.  
  59. return arr;
  60. }
  61.  
  62. public static void main (String[] args) {
  63. boolean isFromFile;
  64. String str;
  65. int amount;
  66. int[] numbers;
  67.  
  68. isFromFile = false;
  69.  
  70. outputTask();
  71. isFromFile = chooseInput();
  72. str = inputString(isFromFile);
  73. amount = countNumbersAmount(str);
  74. numbers = addNumbersInArray(str, amount);
  75. outputAnswer(numbers);
  76.  
  77. scanner.close();
  78.  
  79. }
  80. public static String outputPath() {
  81. String path;
  82. boolean isIncorrect;
  83.  
  84. do {
  85. isIncorrect = false;
  86. System.out.println("\nВведите путь к файлу для вывода: ");
  87. System.out.println();
  88. path = scanner.nextLine();
  89.  
  90. File file = new File(path);
  91. if (!file.exists()) {
  92. System.out.println("По указанном пути файл не найден.");
  93. isIncorrect = true;
  94. } else if (!getExtension(path).equals("txt")) {
  95. System.err.println("Ошибка, неправильный тип файла!");
  96. isIncorrect = true;
  97. }
  98. } while (isIncorrect);
  99. return path;
  100. }
  101. public static void outputAnswerInFile(int[] arr) {
  102. String path;
  103. boolean isIncorrect;
  104.  
  105. path = outputPath();
  106. do {
  107. isIncorrect = false;
  108. try (FileWriter writer = new FileWriter(path, true)) {
  109. if(arr.length == 0) {
  110. writer.write("В строке не были встречены числа и цифры!");
  111. }
  112. else {
  113. writer.write("Числа, встреченные в строе: ");
  114. for(int i = 0; i < arr.length; i++) {
  115. writer.write(arr[i] + ' ');
  116. }
  117. }
  118. } catch (IOException ioException) {
  119. System.err.println("Ошибка при записи в файл");
  120. isIncorrect = true;
  121. }
  122. } while (isIncorrect);
  123. System.out.println("Данные записаны в файл.");
  124. }
  125. public static void outputAnswer(int[] arr) {
  126. if(arr.length == 0) {
  127. System.out.println("В строке не были встречены числа и цифры!");
  128. }
  129. else {
  130. System.out.print("Числа, встреченные в строе: ");
  131. for(int i = 0; i < arr.length; i++) {
  132. System.out.print(arr[i] + " " );
  133. }
  134. }
  135. outputAnswerInFile(arr);
  136. }
  137. public static void outputTask() {
  138. System.out.println("Данная программа записывает в массив встреченные в строке числа.");
  139. }
  140. public static boolean chooseInput() {
  141. int num;
  142. boolean isNotCorrect;
  143.  
  144. num = 0;
  145. do {
  146. isNotCorrect = false;
  147. System.out.println("Выберите, откуда будут вводиться данные: 0, если с консоли; 1, если с файла:");
  148. try {
  149. num = Integer.parseInt(scanner.nextLine());
  150. } catch(NumberFormatException exception) {
  151. isNotCorrect = true;
  152. }
  153. if(isNotCorrect || ((num != 0) && (num != 1))) {
  154. isNotCorrect = true;
  155. System.out.println("Ошибка ввода! Повторите попытку.");
  156. }
  157. } while(isNotCorrect);
  158.  
  159. return (num == 1);
  160. }
  161. public static String inputString(boolean isFromFile) {
  162. String str;
  163.  
  164. str = "";
  165.  
  166. if(isFromFile) {
  167. str = inputFromFile(str);
  168. }
  169. else {
  170. str = inputFromConsole(str);
  171. }
  172.  
  173. return str;
  174. }
  175. public static String inputFromFile(String str) {
  176. String path;
  177. boolean isCorrect;
  178.  
  179. path = pathChoice();
  180. str = "";
  181.  
  182. System.out.println("Ввод строки...");
  183.  
  184. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  185. str = (reader.readLine());
  186. } catch (IOException ioException) {
  187. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  188. }
  189.  
  190. isCorrect = false;
  191. for(int i = 0; i < str.length(); i++) {
  192. if(str.charAt(i) != ' ') {
  193. isCorrect = true;
  194. }
  195. }
  196. if(!isCorrect || (str.length() < 1)) {
  197. System.out.println("Ошибка ввода! Введите строку с клавиатур.");
  198. str = inputFromConsole(str);
  199. }
  200.  
  201. return str;
  202. }
  203. public static String inputFromConsole(String str) {
  204. boolean isNotCorrect;
  205.  
  206. str = "";
  207. do {
  208. isNotCorrect = true;
  209. System.out.println("Введите строку:");
  210. str = scanner.nextLine();
  211. for(int i = 0; i < str.length(); i++) {
  212. if(str.charAt(i) != ' ') {
  213. isNotCorrect = false;
  214. }
  215. }
  216. if(isNotCorrect || (str.length() < 1)) {
  217. System.out.println("Ошибка ввода! Повторите попытку.");
  218. isNotCorrect = true;
  219. }
  220. } while(isNotCorrect);
  221.  
  222. return str;
  223. }
  224. public static String pathChoice() {
  225. String path;
  226. boolean isIncorrect;
  227.  
  228. do {
  229. isIncorrect = false;
  230. System.out.println("Введите путь к файлу: ");
  231. path = scanner.nextLine();
  232.  
  233. File file = new File(path);
  234. if (!file.exists()) {
  235. System.out.println("По указанном пути файл не найден.");
  236. isIncorrect = true;
  237. } else if (!getExtension(path).equals("txt")) {
  238. System.err.println("Ошибка, неправильный тип файла!");
  239. isIncorrect = true;
  240. }
  241. } while (isIncorrect);
  242.  
  243. return path;
  244.  
  245. }
  246. public static String getExtension(String path) {
  247. int pos = path.lastIndexOf('.');
  248. if (pos <= 0) {
  249. return "";
  250. }
  251. return path.substring(pos + 1);
  252. }
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement