Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.io.*;
- public class Main {
- static Scanner scan = new Scanner(System.in);
- public static void main(String[] args) {
- writeTask();
- boolean isForInputOutput = true;
- System.out.print("Выберите способ получения строки(1 - с помощью консоли, 2 - с помощью файлов): ");
- int inputChoice = chooseMethod(isForInputOutput);
- String answer = takeAnswer(inputChoice);
- System.out.print("Выберите способ вывода полученной строки(1 - с помощью консоли, 2 - с помощью файлов): ");
- int outputChoice = chooseMethod(isForInputOutput);
- outputAnswer(outputChoice, answer);
- scan.close();
- }
- public static void writeTask() {
- System.out.println("Данная программа выполняет следующие операции над данными строками:\n1. Нахождение символов, встречающихся в обеих строках;\n2. Нахождение символов, встречающихся только в первой строке;\n3. Нахождение символов, встречающихся только во второй строке.");
- }
- public static String takeStringFromConsole() {
- String str = "";
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- System.out.print("Введите непустую строку: ");
- try {
- str = scan.nextLine();
- } catch (Exception e) {
- isNotCorrect = true;
- System.out.println("Произошла ошибка ввода. Повторите попытку...");
- }
- if ((!isNotCorrect) && (str == "")) {
- isNotCorrect = true;
- System.out.println("Введённая строка должна быть непустой!");
- }
- } while (isNotCorrect);
- return str;
- }
- public static String takePathToFile() {
- String path;
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- System.out.print("Введите путь к файлу: ");
- path = scan.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("Не удалось найти файл по заданному пути. Повторите попытку...");
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- return path;
- }
- public static int chooseMethod(boolean isForInputOutput) {
- boolean isNotCorrect;
- int choice = 0;
- do {
- isNotCorrect = false;
- try {
- choice = Integer.parseInt(scan.nextLine());
- } catch (NumberFormatException e) {
- System.out.println("Число введено некорректно. Повторите попытку...");
- isNotCorrect = true;
- }
- if ((!isNotCorrect) && (isForInputOutput) && (choice != 1) && (choice != 2)) {
- System.out.println("Введите либо 1, либо 2. Ваш выбор: ");
- isNotCorrect = true;
- }
- if ((!isNotCorrect) && (!isForInputOutput) && (choice != 1) && (choice != 2) && (choice != 3)) {
- System.out.print("Введите либо 1, либо 2, либо 3. Ваш выбор: ");
- isNotCorrect = true;
- }
- } while (isNotCorrect);
- return choice;
- }
- public static String findIntersectionOfStrings(String firstStr, String secStr) {
- String answer = "";
- for (int i = 0; i < firstStr.length(); i++) {
- char checkedChar = firstStr.charAt(i);
- if (secStr.indexOf(checkedChar) != -1) {
- answer += checkedChar;
- }
- }
- return answer;
- }
- public static String findSpecialCharInStrings(String firstStr, String secStr) {
- String answer = "";
- for (int i = 0; i < firstStr.length(); i++) {
- char checkedChar = firstStr.charAt(i);
- if (secStr.indexOf(checkedChar) == -1) {
- answer += checkedChar;
- }
- }
- return answer;
- }
- public static String takeAnswer(int inputChoice) {
- boolean isForInput = false;
- int parameter = 0;
- String firstStr = "";
- String secStr = "";
- String answer;
- if (inputChoice == 1) {
- firstStr = takeStringFromConsole();
- secStr = takeStringFromConsole();
- System.out.print("Для выбора операции над строками введите либо 1, либо 2, либо 3: ");
- parameter = chooseMethod(isForInput);
- }
- else {
- String path = takePathToFile();
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- try (Scanner fileReader = new Scanner(new File (path))) {
- try {
- parameter = Integer.parseInt(fileReader.nextLine());
- firstStr = fileReader.nextLine();
- secStr = fileReader.nextLine();
- } catch (NumberFormatException e) {
- System.out.print("Некорректный номер операции. ");
- isNotCorrect = true;
- }
- if ((!isNotCorrect) && (parameter != 1) && (parameter != 2) && (parameter != 3)) {
- System.out.print("Для выбора операции над строками введите либо 1, либо 2, либо 3. ");
- isNotCorrect = true;
- }
- if ((!isNotCorrect) && ((firstStr == "") || (secStr == ""))) {
- System.out.println("Введённая строка не должна быть пустой!");
- isNotCorrect = true;
- }
- } catch (IOException e) {
- System.out.print("Не удалось открыть файл по заданному пути. ");
- isNotCorrect = true;
- }
- if (isNotCorrect) {
- System.out.println("Повторите попытку...");
- path = takePathToFile();
- }
- } while (isNotCorrect);
- }
- System.out.println("Полученная первая строка: '" + firstStr + "'");
- System.out.println("Полученная вторая строка: '" + secStr + "'");
- System.out.println("Выбрана операция №" + parameter);
- if (parameter == 1) {
- answer = findIntersectionOfStrings(firstStr, secStr);
- }
- else if (parameter == 2) {
- answer = findSpecialCharInStrings(firstStr, secStr);
- }
- else {
- answer = findSpecialCharInStrings(secStr, firstStr);
- }
- return answer;
- }
- public static void outputAnswerInConsole(String answer) {
- if (answer == "") {
- System.out.println("Искомых символов не найдено");
- }
- else {
- System.out.println("Полученная строка: '" + answer + "'");
- }
- }
- public static void outputAnswerInFile(String answer) {
- System.out.println("Требуется файл для записи ответа.");
- String path = takePathToFile();
- boolean isNotCorrect;
- do {
- isNotCorrect = false;
- try (FileWriter fileWriter = new FileWriter(new File (path))) {
- if (answer == "") {
- fileWriter.write("Искомых символов не найдено");
- } else {
- fileWriter.write("Искомая строка: '" + answer + "'");
- }
- } catch (IOException e) {
- isNotCorrect = true;
- System.out.println("Произошла ошибка доступа к файлу. Заново введите путь к файлу: ");
- path = takePathToFile();
- }
- } while (isNotCorrect);
- System.out.println("Ответ записан в файл!");
- }
- public static void outputAnswer(int choice, String answer) {
- if (choice == 1) {
- outputAnswerInConsole(answer);
- } else {
- outputAnswerInFile(answer);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement