Advertisement
deced

Untitled

Nov 3rd, 2020 (edited)
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.16 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.Scanner;
  6.  
  7. public class Main {
  8.     static Scanner scanner;
  9.     static String separators = " ,.:;-?!()[]{}@#$%&";
  10.  
  11.     static int getEndIndex(String inputString, int startIndex) {
  12.         while (inputString.length()> startIndex &&!separators.contains(Character.toString(inputString.charAt(startIndex)))) {
  13.             startIndex++;
  14.         }
  15.         startIndex--;
  16.         return startIndex;
  17.     }
  18.  
  19.     static int getNextWordIndex(String inputString, int index) {
  20.         index++;
  21.         while (inputString.length()> index &&separators.contains(Character.toString(inputString.charAt(index)))) {
  22.             index++;
  23.         }
  24.         return index;
  25.     }
  26.  
  27.     static String getWord(String inputString, int fromIndex, int toIndex) {
  28.         String ret = "";
  29.         if (toIndex > inputString.length() - 1) {
  30.             toIndex = inputString.length() - 1;
  31.         }
  32.         toIndex++;
  33.         for (int i = fromIndex; i < toIndex; i++) {
  34.             ret += inputString.charAt(i);
  35.         }
  36.         return ret;
  37.     }
  38.  
  39.     static String getInputType() {
  40.         String ret = "";
  41.         boolean isIncorrect = true;
  42.         do {
  43.             System.out.println("Выберите способ ввода предложения файл/консоль (ф/к)");
  44.             ret = scanner.nextLine();
  45.             if (ret.equalsIgnoreCase("файл") || ret.equalsIgnoreCase("ф")) {
  46.                 ret = "File";
  47.                 isIncorrect = false;
  48.             } else if (ret.equalsIgnoreCase("консоль") || ret.equalsIgnoreCase("к")) {
  49.                 ret = "Console";
  50.                 isIncorrect = false;
  51.             }
  52.         } while (isIncorrect);
  53.         return ret;
  54.     }
  55.  
  56.     static String getInputFilePath() {
  57.         String path;
  58.         boolean isIncorrect = true;
  59.         do {
  60.             System.out.println("Введите абсолютный путь к файлу ");
  61.             path = scanner.nextLine();
  62.             File file = new File(path);
  63.             if (file.isFile() && file.exists()) {
  64.                 isIncorrect = false;
  65.             } else {
  66.                 System.out.println("Файл не найден");
  67.             }
  68.         } while (isIncorrect);
  69.         return path;
  70.     }
  71.  
  72.     static String getInputStringFromConsole() {
  73.         String ret;
  74.         System.out.println("Введите исходное предложение");
  75.         ret = scanner.nextLine();
  76.         return ret;
  77.     }
  78.  
  79.     static String getInputStringFromFile() throws FileNotFoundException {
  80.         String ret = "";
  81.         String filePath;
  82.         filePath = getInputFilePath();
  83.         File file = new File(filePath);
  84.         Scanner reader = new Scanner(file);
  85.         ret = reader.nextLine();
  86.         return ret;
  87.     }
  88.  
  89.     static String getInputString() throws FileNotFoundException {
  90.         String ret ="";
  91.         String inputType;
  92.         inputType = getInputType();
  93.         if (inputType.equals("Console")) {
  94.             ret = getInputStringFromConsole();
  95.         } else if (inputType.equals("File")) {
  96.             ret = getInputStringFromFile();
  97.         }
  98.         return ret;
  99.     }
  100.  
  101.     static String swapTwoWords(String toSwap, int firstStartindex) {
  102.         String word1, word2, separator;
  103.         int firstEndIndex, secondStartIndex, secondEndIndex;
  104.         firstEndIndex = getEndIndex(toSwap, firstStartindex);
  105.         secondStartIndex = getNextWordIndex(toSwap, firstEndIndex);
  106.         secondEndIndex = getEndIndex(toSwap, secondStartIndex);
  107.         word1 = getWord(toSwap, firstStartindex, firstEndIndex);
  108.         word2 = getWord(toSwap, secondStartIndex, secondEndIndex);
  109.         separator = getWord(toSwap, firstEndIndex + 1, secondStartIndex - 1);
  110.         return word2 + separator + word1;
  111.     }
  112.  
  113.     static String swapString(String stringToSwap) {
  114.         String ret  ="";
  115.         int i = 0;
  116.         while (i < stringToSwap.length()) {
  117.             if (separators.contains(Character.toString(stringToSwap.charAt(i))))
  118.             {
  119.                 ret = ret + stringToSwap.charAt(i);
  120.                 i++;
  121.             }
  122.             else
  123.             {
  124.                 ret = ret + swapTwoWords(stringToSwap, i);
  125.                 i = ret.length();
  126.             }
  127.         }
  128.         return ret;
  129.     }
  130.  
  131.     static String getOutputDirectory() {
  132.         String ret;
  133.         boolean isIncorrect = true;
  134.         do {
  135.             System.out.println("Введите директорию, в которую хотите сохранить вывод программы");
  136.             ret = scanner.nextLine();
  137.             File outputDirectory = new File(ret);
  138.             if (outputDirectory.isDirectory() && outputDirectory.exists()) {
  139.                 isIncorrect = false;
  140.             } else {
  141.                 System.out.println("Такой директории не существует.Попробуйте ещё раз");
  142.             }
  143.         } while (isIncorrect);
  144.         return ret;
  145.     }
  146.  
  147. static void printOutputToFile(String input,String output) throws IOException
  148. {
  149.  String directory;
  150. directory = getOutputDirectory();
  151. FileWriter myWriter = new FileWriter(directory + "\\output.txt");
  152. myWriter.write("Входная строка: \n");
  153. myWriter.write(input);
  154. myWriter.write("Выходная строка: \n");
  155. myWriter.write(output);
  156. myWriter.close();
  157. System.out.println("Файл сохранён по указанному пути");
  158. }
  159. static void printOutputToConsole(String input,String output)
  160. {
  161.     System.out.println("Входная строка: \n"+input);
  162.     System.out.println("Выходная строка: \n"+output);
  163. }
  164.     public static void main(String[] args) throws IOException {
  165.         scanner = new Scanner(System.in);
  166.         String input,output="";
  167.         input = getInputString();
  168.         output = swapString(input);
  169.         printOutputToConsole(input, output);
  170.         printOutputToFile(input, output);
  171.  
  172.     }
  173.  
  174. }
  175.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement