Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Scanner;
- public class Main {
- static Scanner scanConsole;
- final static int console = 1;
- final static int file = 2;
- public static int chooseInput(){
- boolean isIncorrect;
- int choose = 0;
- do {
- isIncorrect = false;
- try {
- choose = Integer.parseInt(scanConsole.nextLine());
- } catch (Exception e) {
- System.out.print("Ошибка ввода! Повторите выбор: ");
- isIncorrect = true;
- }
- if (!isIncorrect && choose != console && choose != file) {
- System.out.print("Ошибка ввода! Повторите выбор: ");
- isIncorrect = true;
- }
- } while(isIncorrect);
- return choose;
- }
- public static String inputPath(int choose) {
- String path = "";
- if (choose == file){
- boolean isIncorrect;
- System.out.println("Введите абсолютную ссылку на файл: ");
- do {
- isIncorrect = false;
- path = scanConsole.nextLine();
- File outputFile = new File(path);
- if (!outputFile.exists()) {
- System.out.println("Файл не найден! Введите абсолютную ссылку на файл: ");
- isIncorrect = true;
- }
- if (!outputFile.canWrite()){
- System.out.println("Некорректный файл! Введите абсолютную ссылку на файл: ");
- isIncorrect = true;
- }
- } while (isIncorrect);
- }
- return path;
- }
- public static int checkFile(int choose, String path){
- if (choose == file){
- File file = new File(path);
- if (file.length() == 0){
- choose = console;
- System.out.println("Файл пуст. Ввод данных будет производиться с консоли.");
- }
- }
- return choose;
- }
- public static String inputString(int choose, String path) throws FileNotFoundException {
- String str;
- if (choose == console) {
- str = inputStringConsole();
- } else {
- str = inputStringFile(path);
- }
- return str;
- }
- public static String inputStringConsole() {
- boolean isIncorrect = false;
- String str = "";
- int i;
- do {
- System.out.print("Введите последовательность символов: ");
- isIncorrect = false;
- try {
- str = scanConsole.nextLine();
- } catch (Exception e) {
- System.out.print("Ошибка ввода!");
- isIncorrect = true;
- }
- i = 0;
- while (!isIncorrect & i < str.length()){
- if (str.charAt(i) != 'A' && str.charAt(i) != 'B' && str.charAt(i) != 'C'){
- System.out.print("Ошибка ввода!");
- isIncorrect = true;
- }
- i++;
- }
- } while(isIncorrect);
- return str;
- }
- public static String inputStringFile(String path) throws FileNotFoundException {
- String str = "";
- int i = 0;
- boolean isIncorrect = false;
- File file = new File(path);
- Scanner scanFile = new Scanner(file);
- try {
- str = scanFile.nextLine();
- } catch (Exception e) {
- System.out.println("Ошибка ввода!");
- str = inputStringConsole();
- }
- str.trim();
- while (!isIncorrect & i < str.length()){
- if (str.charAt(i) != 'A' && str.charAt(i) != 'B' && str.charAt(i) != 'C'){
- System.out.print("Ошибка ввода!");
- isIncorrect = true;
- }
- i++;
- }
- scanFile.close();
- return str;
- }
- public static String changeString(String str){
- int check= -1;
- check = str.indexOf("AAAA");
- if (check != -1){
- String[] strArr = str.split("AAAA");
- str = "";
- for (int i = 0; i < strArr.length; i++){
- str += strArr[i];
- }
- changeString(str);
- }
- check = str.indexOf("ABC");
- if (check != -1){
- String[] strArr = str.split("ABC");
- str = "";
- for (int i = 0; i < strArr.length; i++){
- str += strArr[i];
- }
- changeString(str);
- }
- check = str.indexOf("BABA");
- if (check != -1){
- int counter = 0;
- char[] strToArray1 = new char[str.length()];
- char[] strToArray2 = new char[str.length()];
- for (int i = 0;i < check;i++){
- strToArray1[i] = str.charAt(i);
- }
- for (int i = check + 2; i < str.length();i++){
- strToArray2[counter] = str.charAt(i);
- counter++;
- }
- String str1 = new String(strToArray1);
- String str2 = new String(strToArray2);
- str = str1 + str2;
- changeString(str);
- }
- return str;
- }
- public static void outputStringFile(String str, String path) throws IOException {
- FileWriter writer = new FileWriter(path, false);
- if (str.length() == 0){
- writer.write("Строка пуста");
- } else {
- writer.write("Строка после преобразований имеет вид: " + str);
- System.out.println("Данные записаны в файл");
- }
- writer.close();
- }
- public static void outputStringConsole(String str){
- if (str.length() == 0) {
- System.out.println("Строка пуста");
- } else {
- System.out.print("Строка после преобразований имеет вид: " + str);
- }
- }
- public static void outputString(String path, int choose, String str) throws IOException {
- if (choose == file){
- path = inputPath(choose);
- choose = checkFile(choose, path);
- }
- if (choose == console){
- outputStringConsole(str);
- } else {
- outputStringFile(str, path);
- }
- }
- public static void main(String[] args) throws IOException {
- System.out.println("Строка символов состоит из английских букв A, B и С. Разработать рекурсивную процедуру, преобразующую данную строку по правилам:\n1)Удаляет четыре подряд идущих букв А\n2)Удаляет из последовательности ВАВА одну пару ВА\n3)Удаляет комбинацию АВС\nПреобразования выполнять до тех пор,пока ни одной из перечисленных комбинаций не останется.");
- System.out.println("Выберите, откуда будет производиться ввод:\n1.Консоль\n2.Файл");
- scanConsole = new Scanner(System.in);
- int choose = chooseInput();
- String path = inputPath(choose);
- choose = checkFile(choose, path);
- String str = inputString(choose, path);
- str = changeString(str);
- System.out.println("Выберите, куда будет производиться вывод:\n1.Консоль\n2.Файл");
- choose = chooseInput();
- outputString(path, choose, str);
- scanConsole.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement