Advertisement
dxvmxnd

java_2

Dec 18th, 2024
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.40 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.     public static void main(String[] args) {
  6.         String str;
  7.         String answerStr;
  8.  
  9.         outputTask();
  10.         str = choiceOfInput();
  11.         answerStr = findForShortestWord(str);
  12.         outputAnswer(answerStr);
  13.  
  14.     }
  15.     private static final Scanner scanner = new Scanner(System.in);
  16.     public static String findForShortestWord(String str) {
  17.         String shortestWord = "";
  18.         String currentWord = "";
  19.         boolean isFirstWord = true;
  20.  
  21.         for (int i = 0; i < str.length(); i++) {
  22.             char ch = str.charAt(i);
  23.             if (ch == ' ') {
  24.                 if (!currentWord.isEmpty()) {
  25.                     if (isFirstWord || currentWord.length() < shortestWord.length()) {
  26.                         shortestWord = currentWord;
  27.                         isFirstWord = false;
  28.                     }
  29.                     currentWord = "";
  30.                 }
  31.             } else {
  32.                 currentWord += ch;
  33.             }
  34.         }
  35.  
  36.         if (!currentWord.isEmpty() && (isFirstWord || currentWord.length() < shortestWord.length())) {
  37.             shortestWord = currentWord;
  38.         }
  39.         return shortestWord;
  40.     }
  41.     public static void outputAnswer(String str){
  42.         String path;
  43.         boolean isIncorrect;
  44.  
  45.         System.out.println("\nСамое короткое слово в предложении: " + str);
  46.  
  47.  
  48.         path = outputPath();
  49.         do {
  50.             isIncorrect = false;
  51.             try (FileWriter writer = new FileWriter(path, true)) {
  52.                 writer.write("\nСамое короткое слово в предложении: " + str);
  53.             } catch (IOException ioException) {
  54.                 System.err.println("Ошибка при записи в файл");
  55.                 isIncorrect = true;
  56.             }
  57.         } while (isIncorrect);
  58.         System.out.println("Данные записаны в файл.");
  59.     }
  60.     public static String outputPath() {
  61.         String path;
  62.         boolean isIncorrect;
  63.  
  64.         do {
  65.             isIncorrect = false;
  66.             System.out.println("Введите путь к файлу для вывода: ");
  67.             System.out.println();
  68.             path = scanner.nextLine();
  69.  
  70.             File file = new File(path);
  71.             if (!file.exists()) {
  72.                 System.out.println("По указанном пути файл не найден.");
  73.                 isIncorrect = true;
  74.             } else if (!getExtension(path).equals("txt")) {
  75.                 System.err.println("Ошибка, неправильный тип файла!");
  76.                 isIncorrect = true;
  77.             }
  78.         } while (isIncorrect);
  79.         return path;
  80.     }
  81.     public static void outputTask() {
  82.         System.out.println("Данная программа ищет в заданном тексте самое короткое слово.");
  83.     }
  84.     public static String getExtension(String path) {
  85.         int pos = path.lastIndexOf('.');
  86.         if (pos <= 0) {
  87.             return "";
  88.         }
  89.         return path.substring(pos + 1);
  90.     }
  91.     public static String choicePath() {
  92.         String path;
  93.         boolean isIncorrect;
  94.  
  95.         do {
  96.             isIncorrect = false;
  97.             System.out.println("Введите путь к файлу: ");
  98.             path = scanner.nextLine();
  99.  
  100.             File file = new File(path);
  101.             if (!file.exists()) {
  102.                 System.out.println("По указанном пути файл не найден.");
  103.                 isIncorrect = true;
  104.             } else if (!getExtension(path).equals("txt")) {
  105.                 System.err.println("Ошибка, неправильный тип файла!");
  106.                 isIncorrect = true;
  107.             }
  108.         } while (isIncorrect);
  109.         return path;
  110.  
  111.     }
  112.     public static String inputStrFromFile(String path) {
  113.         boolean isNotCorrect;
  114.         String str = "";
  115.         System.out.println("Считывание строки...");
  116.  
  117.         try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  118.             str = reader.readLine();
  119.  
  120.             if (str.isEmpty()) {
  121.                 System.out.println("Ошибка ввода! Строка должна иметь хотя бы 1 символ! Введите строку с клавиатуры.");
  122.                 str = inputFromConsole();
  123.             }
  124.             else {
  125.                 System.out.println("Строка для перекодирования: " + str);
  126.             }
  127.         } catch (IOException ioException) {
  128.             isNotCorrect = true;
  129.         }
  130.  
  131.         return str;
  132.     }
  133.     public static String inputFromFile() {
  134.         String path;
  135.         String str;
  136.  
  137.         path = choicePath();
  138.         str = inputStrFromFile(path);
  139.  
  140.  
  141.         return str;
  142.     }
  143.     public static String inputFromConsole() {
  144.         String str;
  145.         boolean isNotCorrect;
  146.  
  147.         do {
  148.             isNotCorrect = false;
  149.             System.out.println("Введите предложение: ");
  150.             str = scanner.nextLine();
  151.             if ((str.length() < 1) || ((str.charAt(0) == ' ') && (str.length() > 0))) {
  152.                 isNotCorrect = true;
  153.                 System.out.println("Текст должен содержать минимум 1 символ!");
  154.             }
  155.         } while (isNotCorrect);
  156.  
  157.         return str;
  158.  
  159.     }
  160.     public static String choiceOfInput() {
  161.         String str;
  162.         int choice;
  163.         boolean isNotCorrect;
  164.  
  165.         choice = -1;
  166.         do {
  167.             isNotCorrect = false;
  168.             System.out.println("Выберите, откуда вводить данные. Введите 0, если с консоли; 1, если с файла");
  169.             try {
  170.                 choice = Integer.parseInt(scanner.nextLine());
  171.             } catch (NumberFormatException exception) {
  172.                 isNotCorrect = true;
  173.             }
  174.             if (isNotCorrect || ((choice != 0) && (choice != 1))) {
  175.                 isNotCorrect = true;
  176.                 System.err.println("Неверный ввод данных!");
  177.             }
  178.         } while (isNotCorrect);
  179.  
  180.         if (choice == 0) {
  181.             str = inputFromConsole();
  182.         }
  183.         else {
  184.             str = inputFromFile();
  185.         }
  186.  
  187.         return str;
  188.     }
  189. }
  190.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement