Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- String str;
- String answerStr;
- outputTask();
- str = choiceOfInput();
- answerStr = findForShortestWord(str);
- outputAnswer(answerStr);
- }
- private static final Scanner scanner = new Scanner(System.in);
- public static String findForShortestWord(String str) {
- String shortestWord = "";
- String currentWord = "";
- boolean isFirstWord = true;
- for (int i = 0; i < str.length(); i++) {
- char ch = str.charAt(i);
- if (ch == ' ') {
- if (!currentWord.isEmpty()) {
- if (isFirstWord || currentWord.length() < shortestWord.length()) {
- shortestWord = currentWord;
- isFirstWord = false;
- }
- currentWord = "";
- }
- } else {
- currentWord += ch;
- }
- }
- if (!currentWord.isEmpty() && (isFirstWord || currentWord.length() < shortestWord.length())) {
- shortestWord = currentWord;
- }
- return shortestWord;
- }
- public static void outputAnswer(String str){
- String path;
- boolean isIncorrect;
- System.out.println("\nСамое короткое слово в предложении: " + str);
- path = outputPath();
- do {
- isIncorrect = false;
- try (FileWriter writer = new FileWriter(path, true)) {
- writer.write("\nСамое короткое слово в предложении: " + str);
- } catch (IOException ioException) {
- System.err.println("Ошибка при записи в файл");
- isIncorrect = true;
- }
- } while (isIncorrect);
- System.out.println("Данные записаны в файл.");
- }
- public static String outputPath() {
- String path;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("Введите путь к файлу для вывода: ");
- System.out.println();
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("По указанном пути файл не найден.");
- isIncorrect = true;
- } else if (!getExtension(path).equals("txt")) {
- System.err.println("Ошибка, неправильный тип файла!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- public static void outputTask() {
- System.out.println("Данная программа ищет в заданном тексте самое короткое слово.");
- }
- public static String getExtension(String path) {
- int pos = path.lastIndexOf('.');
- if (pos <= 0) {
- return "";
- }
- return path.substring(pos + 1);
- }
- public static String choicePath() {
- String path;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("Введите путь к файлу: ");
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("По указанном пути файл не найден.");
- isIncorrect = true;
- } else if (!getExtension(path).equals("txt")) {
- System.err.println("Ошибка, неправильный тип файла!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- public static String inputStrFromFile(String path) {
- boolean isNotCorrect;
- String str = "";
- System.out.println("Считывание строки...");
- try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
- str = reader.readLine();
- if (str.isEmpty()) {
- System.out.println("Ошибка ввода! Строка должна иметь хотя бы 1 символ! Введите строку с клавиатуры.");
- str = inputFromConsole();
- }
- else {
- System.out.println("Строка для перекодирования: " + str);
- }
- } catch (IOException ioException) {
- isNotCorrect = true;
- }
- return str;
- }
- public static String inputFromFile() {
- String path;
- String str;
- path = choicePath();
- str = inputStrFromFile(path);
- return str;
- }
- public static String inputFromConsole() {
- String str;
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- System.out.println("Введите предложение: ");
- str = scanner.nextLine();
- if ((str.length() < 1) || ((str.charAt(0) == ' ') && (str.length() > 0))) {
- isNotCorrect = true;
- System.out.println("Текст должен содержать минимум 1 символ!");
- }
- } while (isNotCorrect);
- return str;
- }
- public static String choiceOfInput() {
- String str;
- int choice;
- boolean isNotCorrect;
- choice = -1;
- do {
- isNotCorrect = false;
- System.out.println("Выберите, откуда вводить данные. Введите 0, если с консоли; 1, если с файла");
- try {
- choice = Integer.parseInt(scanner.nextLine());
- } catch (NumberFormatException exception) {
- isNotCorrect = true;
- }
- if (isNotCorrect || ((choice != 0) && (choice != 1))) {
- isNotCorrect = true;
- System.err.println("Неверный ввод данных!");
- }
- } while (isNotCorrect);
- if (choice == 0) {
- str = inputFromConsole();
- }
- else {
- str = inputFromFile();
- }
- return str;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement