Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.Scanner;
- import java.io.*;
- import java.io.PrintWriter;
- public class Main {
- final static Scanner scan = new Scanner(System.in);
- public static boolean isIncorrect;
- public static void main(String[] args) {
- printInfo();
- String text;
- text = chooseInput();
- chooseOutput(text);
- scan.close();
- }
- public static String SubString(String s, int begin, int end) {
- String res = "";
- for (int i = begin; i < end; i++) {
- res += s.charAt(i);
- }
- return res;
- }
- public static String MinWordLen(String s) {
- String minWord = s;//если слово одно, оно сразу же будет равно строке
- String word = "";
- int indexBegin = 0;
- int index = 0;
- Boolean checkPr;
- for (int i = 0; i < s.length(); i++) {
- checkPr = false;
- if (s.charAt(i) == ' ') {
- checkPr = true;
- word = SubString(s, index, i);
- }
- if (i == s.length() - 1) {
- word = SubString(s, index, i + 1);
- }
- if (minWord.length() > word.length() && word.length() != 0) {
- indexBegin = index;
- minWord = word;
- }
- if (checkPr) {
- index = i + 1;
- }
- }
- String res = "Самое короткое слово в строке:\n" + minWord + "\nПозиция, с которой оно начинается:\n" + indexBegin +"\n";
- return res;
- }
- public static void printInfo() {
- System.out.println("Программа находит самое короткое слово в предложении и выводит позицию, с которой оно начинается");
- }
- public static String input() {
- String str;
- str = scan.nextLine();
- if (str.isEmpty()) {
- isIncorrect = true;
- System.err.print("Ошибка. Строка не может быть пустой. ");
- }
- return str;
- }
- public static String readTextFromConsole() {
- String text;
- do {
- isIncorrect = false;
- System.out.println("Введите строку:");
- text = input();
- } while (isIncorrect);
- return text;
- }
- public static String chooseInput() {
- String option;
- String text = null;
- System.out.println("Выберите способ ввода данных.\n" +
- "Введите 'console', если хотите ввести данные через консоль.\n"
- + "Введите 'file', если хотите передать данные из файла");
- option = chooseAction();
- if (option.equalsIgnoreCase("console")) {
- text = readTextFromConsole();
- } else
- text = readFile();
- return text;
- }
- public static String readPath() {
- String path;
- System.out.println("Введите путь к файлу:");
- do {
- isIncorrect = false;
- path = scan.nextLine();
- File file = new File(path);
- if (!file.exists() || !path.endsWith(".txt") || file.isDirectory()) {
- isIncorrect = true;
- System.err.println("Файл недоступен. Повторите ввод:");
- }
- } while (isIncorrect);
- return path;
- }
- public static String readTextFromFile(Scanner fscan) {
- String text;
- text = fscan.nextLine();
- if (text.isEmpty()) {
- isIncorrect = true;
- System.err.print("Ошибка. Файл пуст. ");
- }
- return text;
- }
- public static String readFile() {
- String path;
- String text = null;
- do {
- isIncorrect = false;
- path = readPath();
- Scanner fscan = null;
- try {
- fscan = new Scanner(new File(path));
- } catch (FileNotFoundException e) {
- System.out.println(e.getMessage());
- }
- if (!isIncorrect)
- text = readTextFromFile(fscan);
- fscan.close();
- } while (isIncorrect);
- return text;
- }
- public static String chooseAction() {
- String input;
- do {
- isIncorrect = false;
- input = scan.nextLine();
- if (!input.equalsIgnoreCase("console") && !input.equalsIgnoreCase("file")) {
- isIncorrect = true;
- System.err.println("Ошибка. Введите 'console' или 'file':");
- }
- } while (isIncorrect);
- return input;
- }
- public static void writeConsole(String text) {
- String res = null;
- res = MinWordLen(text);
- System.out.println(res);
- }
- public static void writeFile(String text) {
- String res = null;
- do {
- isIncorrect = false;
- try (PrintWriter pw = new PrintWriter(new FileWriter(readPath(), false))) {
- res = MinWordLen(text);
- pw.println(res);
- } catch (IOException e) {
- System.err.println(e.getMessage());
- System.err.println("Ошибка. Невозможно записать данные в файл.");
- isIncorrect = true;
- }
- } while (isIncorrect);
- System.out.println("Информация успешно записана в файл.");
- }
- public static void chooseOutput(String text) {
- String option;
- System.out.println("Выберите способ вывода результата.\n" +
- "Введите 'console', если хотите вывести результат через консоль.\n" +
- "Введите 'file', если хотите передать результат в файл.");
- option = chooseAction();
- if (option.equals("console"))
- writeConsole(text);
- else
- writeFile(text);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement