SHARE
TWEET

Untitled

a guest Nov 19th, 2019 79 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.*;
  2. import java.util.Arrays;
  3. import java.util.HashSet;
  4. import java.util.Scanner;
  5.  
  6. public class Lab3_2 {
  7.  
  8.     static Scanner scan = new Scanner(System.in);
  9.  
  10.     static String getStrFromKeyboard() {
  11.         boolean incorrect = true;
  12.         String input;
  13.         do {
  14.             System.out.println("Введите последовательность символов :");
  15.             input = scan.next();
  16.             if (input.length() == 0) {
  17.                 System.out.println("Ошибка! Вы ввели пустую последовательность! Попробуйте еще раз.");
  18.             } else {
  19.                 incorrect = false;
  20.             }
  21.         }
  22.         while (incorrect);
  23.         return (input);
  24.     }
  25.  
  26.     static String getStrFromFile() {
  27.         String fileName;
  28.         boolean incorrect = true;
  29.         String input = "";
  30.         do {
  31.             System.out.println("Введите имя файла, из которого желаете ввести последовательность символов :");
  32.             fileName = scan.next();
  33.             fileName += ".txt";
  34.             File inputFile = new File(fileName);
  35.             if ((inputFile.exists()) && (inputFile.length() == 0)) {
  36.                 System.out.println("Данный файл пуст!");
  37.                 incorrect = true;
  38.             } else {
  39.                 try (BufferedReader br = new BufferedReader(new FileReader(inputFile))) {
  40.                     input = br.readLine();
  41.                     incorrect = false;
  42.                 } catch (FileNotFoundException e) {
  43.                     System.out.println("Файл " + fileName + " не найден!");
  44.                 } catch (Exception e) {
  45.                     System.out.println("Ошибка чтения файла! Проверьте файл и данные в нем.");
  46.                 }
  47.             }
  48.         }
  49.         while (incorrect);
  50.         System.out.println("Введенная последовательность :" + input);
  51.         return (input);
  52.     }
  53.  
  54.     static void outputToConsole(HashSet<Character> resultSet) {
  55.         System.out.println("Полученное множество :");
  56.         if (resultSet.size() == 0) {
  57.             System.out.println("Множество пусто, так как во введенной строке нет " +
  58.                     "ни одного знака арифметической операции, скобки или четного числа.");
  59.         } else {
  60.             System.out.print("[");
  61.             for (int i = 0; i < resultSet.toArray().length; i++) {
  62.                 System.out.print(" " + resultSet.toArray()[i] + " ");
  63.             }
  64.             System.out.print("]");
  65.         }
  66.     }
  67.  
  68.     static void outputToFile(HashSet<Character> resultSet) {
  69.         boolean incorrect = true;
  70.         PrintWriter writer = null;
  71.         File outputFile;
  72.         do {
  73.             System.out.println("Введите имя текстового (.txt) файла," +
  74.                     " в который вы хотите вывести данные.");
  75.             String fileName = scan.next();
  76.             fileName += ".txt";
  77.             outputFile = new File(fileName);
  78.             try {
  79.                 writer = new PrintWriter(outputFile);
  80.                 incorrect = false;
  81.             } catch (Exception e) {
  82.                 System.out.println("Ошибка! Введите другое имя файла.");
  83.             }
  84.         }
  85.         while (incorrect);
  86.         System.out.println("Полученное множество :");
  87.         if (resultSet == null) {
  88.             System.out.println("Множество пусто, так как во введенной строке нет " +
  89.                     "ни одного знака арифметической операции, скобки или четного числа.");
  90.             writer.write("Множество пусто, так как во введенной строке нет " +
  91.                     "ни одного знака арифметической операции, скобки или четного числа.");
  92.         } else {
  93.             System.out.print("[");
  94.             writer.write("[");
  95.             for (int i = 0; i < resultSet.toArray().length; i++) {
  96.                 System.out.print(" " + resultSet.toArray()[i] + " ");
  97.                 writer.write(" " + resultSet.toArray()[i] + " ");
  98.             }
  99.             System.out.print("]");
  100.             writer.write("]");
  101.         }
  102.         writer.close();
  103.         System.out.println("Результат успешно записан в файл " + outputFile);
  104.     }
  105.  
  106.     static HashSet<Character> buildNewSet(String input, HashSet<Character> resultSet) {
  107.         HashSet<Character> defaultSet =
  108.                 new HashSet<>(Arrays.asList('-', '2', '+', '4', '/', '6', '*', '8', '>', '<', '=', '(', ')'));
  109.         int i = 0;
  110.         input += " ";
  111.         while (i < input.length()) {
  112.             if (defaultSet.contains(input.charAt(i))) {
  113.                 resultSet.add(input.charAt(i));
  114.                 i++;
  115.             } else i++;
  116.         }
  117.         return (resultSet);
  118.     }
  119.  
  120.     static String getUserChoiceForInput() {
  121.         boolean incorrect;
  122.         String input = null;
  123.         byte choice = 0;
  124.         do {
  125.             System.out.println("Если Вы желаете ввести последовательность вручную - введите 1.\n" +
  126.                     "Если Вы желаете ввести последовательность из файла - введите 2.");
  127.             incorrect = false;
  128.             try {
  129.                 choice = scan.nextByte();
  130.             } catch (Exception e) {
  131.             }
  132.             switch (choice) {
  133.                 case (1):
  134.                     input = getStrFromKeyboard();
  135.                     break;
  136.                 case (2):
  137.                     input = getStrFromFile();
  138.                     break;
  139.                 default:
  140.                     System.out.println("Ошибка ввода! Введите 1 или 2.");
  141.                     scan.nextLine();
  142.                     incorrect = true;
  143.             }
  144.         } while (incorrect);
  145.         return (input);
  146.     }
  147.  
  148.     static void getUserChoiceForOutput(HashSet<Character> resultSet) {
  149.         boolean incorrect;
  150.         byte choice = 0;
  151.         do {
  152.             System.out.println("Если Вы желаете вывести результат в консоль - введите 1.\n" +
  153.                     "Если Вы желаете вывести результат в файл - введите 2.");
  154.             incorrect = false;
  155.             try {
  156.                 choice = scan.nextByte();
  157.             } catch (Exception e) {
  158.             }
  159.             switch (choice) {
  160.                 case (1):
  161.                     outputToConsole(resultSet);
  162.                     break;
  163.                 case (2):
  164.                     outputToFile(resultSet);
  165.                     break;
  166.                 default:
  167.                     System.out.println("Ошибка ввода! Введите 1 или 2.");
  168.                     scan.nextLine();
  169.                     incorrect = true;
  170.             }
  171.         } while (incorrect);
  172.     }
  173.  
  174.     public static void main(String[] args) {
  175.         System.out.println("Данная программа на основе введенной последовательности символов " +
  176.                 "строит и выводит множество, состоящее из четных цифр, знаков " +
  177.                 "арифметических операций и скобок, содержащихся в последовательности.");
  178.         HashSet<Character> resultSet = new HashSet<Character>();
  179.         String input = getUserChoiceForInput();
  180.         resultSet = buildNewSet(input, resultSet);
  181.         getUserChoiceForOutput(resultSet);
  182.     }
  183. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top