Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.67 KB | None | 0 0
  1. import java.awt.*;
  2. import java.util.*;
  3. import java.io.File;
  4. import java.io.FileWriter;
  5. import java.io.BufferedReader;
  6. import java.io.FileReader;
  7. import java.util.Scanner;
  8. import java.io.PrintWriter;
  9. import java.io.IOException;
  10. import java.util.HashSet;
  11. import java.util.Set;
  12. import java.util.Arrays;
  13.  
  14. public class L3 {
  15.  
  16.     private static final String ERROR1 = "Последовательность должна состоять более чем из одного элемента. Повторите попытку";
  17.     public static final String ERROR = "Введите имя файла в формате 'name.txt'.";
  18.     public static final String ERROR2 = "Ошибка доступа, повторите попытку.";
  19.     public static final String ENTER_CHOICE = "Последовательность вводится из клавиатуры или из файла? (Key|File)";
  20.     public static final String ERROR0= "Ошибка ввода. Введите 'Key' или 'File'.";
  21.     public static final String W = "Слово '";
  22.     public static final String IN_W = "' встречается в предложении ";
  23.     public static final String COR_SEN= "Множество, состоящее из цифр и знаков арифметических операций введенной последовательности:";
  24.     public static final String FIR_SEN = "Введенная последовательность:";
  25.     public static final String INPUT_NAME = "Введите имя файла в формате 'name.txt'.";
  26.     public static final String RESULT_NAME = "Введите имя файла, в который нужно записать результат.";
  27.     public static final String MAS_F = "Результат записан в указанный файл.";
  28.     public static final String TASK = "Задача: Дана непустая последовательность символов, требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности знаки арифметических операций и цифры.";
  29.  
  30.     private static final Set<Character> Numbers = new HashSet<>(Arrays.asList(
  31.             '0','1','2','3','4','5','6','7','8','9'
  32.     ));
  33.  
  34.     private static final Set<Character> Symbols = new HashSet<>(Arrays.asList(
  35.             '+','-','*','/','^'
  36.     ));
  37.  
  38.     private static final Set<Character> Final_Array = new HashSet<>(Arrays.asList());
  39.  
  40.     private static String EnterChoice() {
  41.         String Choice;
  42.         boolean IsCorrect;
  43.         Scanner scan = new Scanner(System.in);
  44.         System.out.println(ENTER_CHOICE);
  45.         do {
  46.             Choice = scan.nextLine();
  47.             if (Choice.equals("Key") || Choice.equals("File"))
  48.                 IsCorrect = false;
  49.             else {
  50.                 System.out.println(ERROR0);
  51.                 IsCorrect = true;
  52.             }
  53.         }
  54.         while (IsCorrect);
  55.         return Choice;
  56.     }
  57.  
  58.     static String enterFileName() {
  59.         String NameFile;
  60.         boolean IsCorrect;
  61.         System.out.println(INPUT_NAME);
  62.         Scanner scan = new Scanner(System.in);
  63.         do {
  64.             NameFile = scan.nextLine();
  65.             File SFile = new File(NameFile);
  66.             if (SFile.exists())
  67.                 IsCorrect = false;
  68.             else {
  69.                 System.out.println(ERROR);
  70.                 IsCorrect = true;
  71.             }
  72.         }
  73.         while (IsCorrect);
  74.         return NameFile;
  75.     }
  76.  
  77.     static String enterSequence(String fileName){
  78.         String sentence = null;
  79.         BufferedReader PReader = null;
  80.         try {
  81.             PReader = new BufferedReader(new FileReader(fileName));
  82.                 sentence = PReader.readLine();
  83.         } catch (IOException e) {
  84.             System.out.println(ERROR2);
  85.         }
  86.         return sentence;
  87.     }
  88.  
  89.     static boolean checkEmptyFile(int num){
  90.         boolean isCorrect = true;
  91.         if (num == 0){
  92.             System.out.println("Файл пуст. Повторите попытку.");
  93.             isCorrect = false;
  94.         }
  95.         return isCorrect;
  96.     }
  97.  
  98.     static boolean correctSequence(String sequence, int n ){
  99.         int i = 0;
  100.         boolean isCorrect = true;
  101.         while ((i < n) && (isCorrect == true)){
  102.             if (Symbols.contains(sequence.charAt(i)) || (Numbers.contains(sequence.charAt(i))))
  103.                 isCorrect = false;
  104.             i++;
  105.         }
  106.         if (isCorrect == true) {
  107.             System.out.println(ERROR1);
  108.         }
  109.         return isCorrect;
  110.     }
  111.  
  112.     public static String CorrectSequenceKey (){
  113.         int n;
  114.         String sequence;
  115.         boolean isCorrect;
  116.         final int MIN_NUM = 2;
  117.         System.out.println("Введите последовательность");
  118.         do {
  119.            Scanner scan = new Scanner(System.in);
  120.             sequence = scan.nextLine();
  121.            n = sequence.length();
  122.            if (n < MIN_NUM) {
  123.                System.out.println(ERROR1);
  124.                isCorrect = true;
  125.            }
  126.            else {
  127.                isCorrect = correctSequence(sequence, n);
  128.            }
  129.         }
  130.        while(isCorrect);
  131.        return sequence;
  132.     }
  133.  
  134.     public static void enterArray(String sequence, int num) {
  135.         int i,
  136.             n = 0;
  137.         for (i = 0; i < num; i++)
  138.             if (Symbols.contains(sequence.charAt(i)) || (Numbers.contains(sequence.charAt(i)))) {
  139.                 Final_Array.add(sequence.charAt(i));
  140.                 n++;
  141.             }
  142.     }
  143.  
  144.     public static void outputArray(int n, String sequence){
  145.         int i;
  146.         System.out.println(COR_SEN);
  147.         for(i = 0; i < n; i++)
  148.             if (Final_Array.contains(sequence.charAt(i)))
  149.                 System.out.print(sequence.charAt(i) + ", ");
  150.          System.out.println();
  151.     }
  152.  
  153.     static void writeResultFile( int n, String sequence, String outputFileName){
  154.         try {
  155.             FileWriter WriteF = null;
  156.             File Output = new File(outputFileName);
  157.             WriteF = new FileWriter(Output,true);
  158.             WriteF.write(FIR_SEN + "\n" + sequence + "\n" + COR_SEN + "\n");
  159.             for (int i = 0; i < n; i++)
  160.                 if (Final_Array.contains(sequence.charAt(i)))
  161.                     WriteF.append(sequence.charAt(i) +  ", " );
  162.             WriteF.close();
  163.         } catch (IOException e) {
  164.             System.out.println(ERROR2);
  165.         }
  166.     }
  167.  
  168.     public static void main(String[] args) {
  169.         int n = 0, num;
  170.         String choice, sequence, fileName, outputFileName;
  171.         boolean isCorrect = true;
  172.         HashSet<Character> myHashSet = new HashSet<Character>();
  173.         System.out.println(TASK);
  174.         choice = EnterChoice();
  175.         if (choice.equals("Key")){
  176.             sequence = CorrectSequenceKey();
  177.             num = sequence.length();
  178.         }
  179.         else{
  180.             do{
  181.                 fileName = enterFileName();
  182.                 sequence = enterSequence(fileName);
  183.                 num = sequence.length();
  184.                 isCorrect = checkEmptyFile(num);
  185.                 isCorrect = correctSequence(sequence, num);
  186.             }
  187.             while(isCorrect);
  188.         }
  189.         System.out.println(FIR_SEN + "\n" + sequence);
  190.         enterArray(sequence, num);
  191.         outputArray(num, sequence);
  192.         if (choice.equals("File")){
  193.             System.out.println(RESULT_NAME);
  194.             outputFileName = enterFileName();
  195.             writeResultFile(num, sequence, outputFileName);
  196.             System.out.println(MAS_F);
  197.         }
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement