Advertisement
dxvmxnd

Untitled

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