Advertisement
dxvmxnd

Untitled

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