Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // В заданном тексте в каждом четном слове заменить все строчные буквенные символы на прописные, а каждое нечетное слово заключить в круглые скобки.
- package com.company;
- import java.io.File;
- import java.io.PrintWriter;
- import java.util.Scanner;
- class ExceptionFileCannotBeReadOrEmpty extends Exception {
- }
- public class Main {
- private static Scanner scConsole;
- private static final String MES_TASK = "В заданном тексте в каждом четном слове заменить все строчные буквенные символы на прописные, а каждое нечетное слово заключить в круглые скобки.";
- private static final String ERROR_FILE_NOT_FOUND = "Файл не найден.";
- private static final String FORMAT_INPUT_OF_PATH = "Пожалуйста, введите путь к файлу %s: ";
- private static final String MES_ASK_INPUT_METHOD = "\nОткуда брать данные?\n\t1 - из файла\n\t2 - ввести вручную\n";
- private static final String MES_ASK_AGAIN_INPUT_METHOD = "\t\"1\" - повторить попытку.\n\t\"2\" - ввести данные из консоли.\n";
- private static final String ERROR_FILE_CANNOT_BE_READ_OR_IS_EMPTY = "Файл не может быть прочитан или пуст.";
- private static final String MES_ASK_OUTPUT_TO_FILE = "Хотите вывести ответ в файл?\n\t1 - да\n\t2 - нет\n";
- private static final String ERROR_FILE_CANNOT_BE_CREATED_OT_OPENED = "Файл не может быть создан или открыт. Повторите попытку:\n";
- private static final String ERROR_CHOICE_IS_INCORRECT = "\tНадо ввести \"1\" или \"2\".\n\tПовторите попытку: ";
- private static String choose(String sChoice1, String sChoice2, String sQuestion) {
- short nChoice = 2;
- boolean bIsIncorrect;
- String sAnswer;
- System.out.println(sQuestion + "\tВаш выбор: ");
- do {
- bIsIncorrect = false;
- try {
- nChoice = Short.parseShort(scConsole.nextLine());
- } catch (NumberFormatException e) {
- bIsIncorrect = true;
- }
- if (!bIsIncorrect && !(nChoice == 1) && !(nChoice == 2)) {
- bIsIncorrect = true;
- }
- if (bIsIncorrect) {
- System.out.println(ERROR_CHOICE_IS_INCORRECT);
- }
- } while (bIsIncorrect);
- sAnswer = nChoice == 1 ? sChoice1 : sChoice2;
- return sAnswer;
- }
- private static String inputPathToFile(boolean isInput) {
- String file;
- String partOfText;
- if (isInput) partOfText = "ввода";
- else partOfText = "вывода";
- System.out.printf(FORMAT_INPUT_OF_PATH, partOfText);
- file = scConsole.nextLine();
- return file;
- }
- private static String readStringFromFile(String sPathToFile) throws java.io.FileNotFoundException, ExceptionFileCannotBeReadOrEmpty {
- Scanner scFileInput = new Scanner(new File(sPathToFile));
- StringBuilder sInput = new StringBuilder();
- if (scFileInput.hasNextLine()) {
- do {
- sInput.append(scFileInput.nextLine()).append("\n");
- } while (scFileInput.hasNextLine());
- } else {
- throw new ExceptionFileCannotBeReadOrEmpty();
- }
- scFileInput.close();
- System.out.println("На входе:\n" + sInput);
- return sInput.toString();
- }
- private static String readStringFromConsole() {
- String sInput = "";
- System.out.println("Введите строку:");
- sInput = scConsole.nextLine();
- return sInput;
- }
- private static String getInput() {
- String sInput = "";
- boolean bInputIsNotDone = true;
- String sInputMethod = choose("FromFile", "FromConsole", MES_ASK_INPUT_METHOD);
- do {
- switch (sInputMethod) {
- case "FromFile" -> {
- String sPathToFile = inputPathToFile(true);
- try {
- sInput = readStringFromFile(sPathToFile);
- bInputIsNotDone = false;
- } catch (java.io.FileNotFoundException e) {
- System.out.println(ERROR_FILE_NOT_FOUND);
- } catch (ExceptionFileCannotBeReadOrEmpty e) {
- System.out.println(ERROR_FILE_CANNOT_BE_READ_OR_IS_EMPTY);
- }
- if (bInputIsNotDone) {
- sInputMethod = choose("FromFile", "FromConsole", MES_ASK_AGAIN_INPUT_METHOD);
- }
- }
- case "FromConsole" -> {
- sInput = readStringFromConsole();
- bInputIsNotDone = false;
- }
- }
- } while (bInputIsNotDone);
- return sInput;
- }
- private static String changeStringToAns(String sInput) {
- String sAnswer = "";
- Scanner scStringInput = new Scanner(sInput);
- Scanner scLine;
- int i = 1;
- while (scStringInput.hasNextLine()) {
- scLine = new Scanner(scStringInput.nextLine());
- while (scLine.hasNext()) {
- sAnswer += i % 2 == 0 ? scLine.next().toUpperCase() + " " : "(" + scLine.next() + ") ";
- i++;
- }
- sAnswer += "\n";
- }
- return sAnswer;
- }
- private static void outputToFile(String sAnswer, String sPathToFIle) {
- boolean bOutputNotReady = true;
- do {
- try {
- PrintWriter fOutput = new PrintWriter(sPathToFIle);
- fOutput.print(sAnswer);
- fOutput.close();
- bOutputNotReady = false;
- } catch (Exception e) {
- System.out.print(ERROR_FILE_CANNOT_BE_CREATED_OT_OPENED);
- }
- } while (bOutputNotReady);
- }
- private static void outputAnswer(String sAnswer) {
- System.out.println("Ответ:\n" + sAnswer);
- String sShouldOutputInfoToFile = choose("Output to file", "Don't output to file", MES_ASK_OUTPUT_TO_FILE);
- if (sShouldOutputInfoToFile == "Output to file") {
- String sPathToFile = inputPathToFile(false);
- outputToFile(sAnswer, sPathToFile);
- }
- }
- public static void main(String[] args) {
- scConsole = new Scanner(System.in);
- System.out.println(MES_TASK);
- // Путь к моему файлу ввода: /Users/sasha/Documents/___Университет/ОАиП/Пз/Лабы/блок 3/input.txt
- // Путь к моему файлу вывода: /Users/sasha/Documents/___Университет/ОАиП/Пз/Лабы/блок 3/output.txt
- String sInput = getInput();
- String sAnswer = changeStringToAns(sInput);
- outputAnswer(sAnswer);
- scConsole.close();
- }
- }
Add Comment
Please, Sign In to add comment