Advertisement
gguuppyy

лаба3н1

Nov 27th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.30 KB | Source Code | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. import java.io.*;
  4. import java.io.PrintWriter;
  5.  
  6. public class Main {
  7.  
  8.     final static Scanner scan = new Scanner(System.in);
  9.     public static boolean isIncorrect;
  10.  
  11.  
  12.     public static void main(String[] args) {
  13.         printInfo();
  14.         String text;
  15.         text = chooseInput();
  16.  
  17.         chooseOutput(text);
  18.         scan.close();
  19.     }
  20.  
  21.     public static String SubString(String s, int begin, int end) {
  22.         String res = "";
  23.         for (int i = begin; i < end; i++) {
  24.             res += s.charAt(i);
  25.         }
  26.         return res;
  27.     }
  28.  
  29.     public static String MinWordLen(String s) {
  30.  
  31.  
  32.         String minWord = s;//если слово одно, оно сразу же будет равно строке
  33.         String word = "";
  34.  
  35.         int indexBegin = 0;
  36.         int index = 0;
  37.         Boolean checkPr;
  38.         for (int i = 0; i < s.length(); i++) {
  39.             checkPr = false;
  40.             if (s.charAt(i) == ' ') {
  41.                 checkPr = true;
  42.                 word = SubString(s, index, i);
  43.  
  44.             }
  45.             if (i == s.length() - 1) {
  46.                 word = SubString(s, index, i + 1);
  47.             }
  48.  
  49.             if (minWord.length() > word.length() && word.length() != 0) {
  50.                 indexBegin = index;
  51.                 minWord = word;
  52.             }
  53.             if (checkPr) {
  54.                 index = i + 1;
  55.             }
  56.         }
  57.  
  58.         String res = "Самое короткое слово в строке:\n" + minWord + "\nПозиция, с которой оно начинается:\n" + indexBegin +"\n";
  59.         return res;
  60.     }
  61.  
  62.     public static void printInfo() {
  63.         System.out.println("Программа находит самое короткое слово в предложении и выводит позицию, с которой оно начинается");
  64.     }
  65.  
  66.     public static String input() {
  67.         String str;
  68.         str = scan.nextLine();
  69.         if (str.isEmpty()) {
  70.             isIncorrect = true;
  71.             System.err.print("Ошибка. Строка не может быть пустой. ");
  72.         }
  73.         return str;
  74.     }
  75.  
  76.     public static String readTextFromConsole() {
  77.         String text;
  78.         do {
  79.             isIncorrect = false;
  80.             System.out.println("Введите строку:");
  81.             text = input();
  82.         } while (isIncorrect);
  83.         return text;
  84.     }
  85.  
  86.     public static String chooseInput() {
  87.         String option;
  88.         String text = null;
  89.  
  90.         System.out.println("Выберите способ ввода данных.\n" +
  91.                 "Введите 'console', если хотите ввести данные через консоль.\n"
  92.                 + "Введите 'file', если хотите передать данные из файла");
  93.         option = chooseAction();
  94.         if (option.equalsIgnoreCase("console")) {
  95.             text = readTextFromConsole();
  96.         } else
  97.             text = readFile();
  98.         return text;
  99.     }
  100.  
  101.     public static String readPath() {
  102.         String path;
  103.         System.out.println("Введите путь к файлу:");
  104.         do {
  105.             isIncorrect = false;
  106.             path = scan.nextLine();
  107.             File file = new File(path);
  108.             if (!file.exists() || !path.endsWith(".txt") || file.isDirectory()) {
  109.                 isIncorrect = true;
  110.                 System.err.println("Файл недоступен. Повторите ввод:");
  111.             }
  112.         } while (isIncorrect);
  113.         return path;
  114.     }
  115.  
  116.     public static String readTextFromFile(Scanner fscan) {
  117.         String text;
  118.         text = fscan.nextLine();
  119.         if (text.isEmpty()) {
  120.             isIncorrect = true;
  121.             System.err.print("Ошибка. Файл пуст. ");
  122.         }
  123.         return text;
  124.     }
  125.  
  126.     public static String readFile() {
  127.         String path;
  128.         String text = null;
  129.  
  130.         do {
  131.             isIncorrect = false;
  132.             path = readPath();
  133.             Scanner fscan = null;
  134.             try {
  135.                 fscan = new Scanner(new File(path));
  136.             } catch (FileNotFoundException e) {
  137.                 System.out.println(e.getMessage());
  138.             }
  139.             if (!isIncorrect)
  140.                 text = readTextFromFile(fscan);
  141.  
  142.             fscan.close();
  143.         } while (isIncorrect);
  144.  
  145.         return text;
  146.     }
  147.  
  148.     public static String chooseAction() {
  149.         String input;
  150.         do {
  151.             isIncorrect = false;
  152.             input = scan.nextLine();
  153.             if (!input.equalsIgnoreCase("console") && !input.equalsIgnoreCase("file")) {
  154.                 isIncorrect = true;
  155.                 System.err.println("Ошибка. Введите 'console' или 'file':");
  156.             }
  157.         } while (isIncorrect);
  158.         return input;
  159.     }
  160.  
  161.     public static void writeConsole(String text) {
  162.         String res = null;
  163.         res = MinWordLen(text);
  164.         System.out.println(res);
  165.     }
  166.  
  167.     public static void writeFile(String text) {
  168.         String res = null;
  169.         do {
  170.             isIncorrect = false;
  171.             try (PrintWriter pw = new PrintWriter(new FileWriter(readPath(), false))) {
  172.  
  173.  
  174.                 res = MinWordLen(text);
  175.                 pw.println(res);
  176.             } catch (IOException e) {
  177.                 System.err.println(e.getMessage());
  178.                 System.err.println("Ошибка. Невозможно записать данные в файл.");
  179.                 isIncorrect = true;
  180.             }
  181.         } while (isIncorrect);
  182.         System.out.println("Информация успешно записана в файл.");
  183.     }
  184.  
  185.     public static void chooseOutput(String text) {
  186.         String option;
  187.         System.out.println("Выберите способ вывода результата.\n" +
  188.                 "Введите 'console', если хотите вывести результат через консоль.\n" +
  189.                 "Введите 'file', если хотите передать результат в файл.");
  190.         option = chooseAction();
  191.         if (option.equals("console"))
  192.             writeConsole(text);
  193.         else
  194.             writeFile(text);
  195.     }
  196.  
  197. }
  198.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement