Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.util.*;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.util.Scanner;
- import java.io.PrintWriter;
- import java.io.IOException;
- import java.util.HashSet;
- import java.util.Set;
- import java.util.Arrays;
- public class L3 {
- private static final String ERROR1 = "Последовательность должна состоять более чем из одного элемента. Повторите попытку";
- public static final String ERROR = "Введите имя файла в формате 'name.txt'.";
- public static final String ERROR2 = "Ошибка доступа, повторите попытку.";
- public static final String ENTER_CHOICE = "Последовательность вводится из клавиатуры или из файла? (Key|File)";
- public static final String ERROR0= "Ошибка ввода. Введите 'Key' или 'File'.";
- public static final String W = "Слово '";
- public static final String IN_W = "' встречается в предложении ";
- public static final String COR_SEN= "Множество, состоящее из цифр и знаков арифметических операций введенной последовательности:";
- public static final String FIR_SEN = "Введенная последовательность:";
- public static final String INPUT_NAME = "Введите имя файла в формате 'name.txt'.";
- public static final String RESULT_NAME = "Введите имя файла, в который нужно записать результат.";
- public static final String MAS_F = "Результат записан в указанный файл.";
- public static final String TASK = "Задача: Дана непустая последовательность символов, требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности знаки арифметических операций и цифры.";
- private static final Set<Character> Numbers = new HashSet<>(Arrays.asList(
- '0','1','2','3','4','5','6','7','8','9'
- ));
- private static final Set<Character> Symbols = new HashSet<>(Arrays.asList(
- '+','-','*','/','^'
- ));
- private static final Set<Character> Final_Array = new HashSet<>(Arrays.asList());
- private static String EnterChoice() {
- String Choice;
- boolean IsCorrect;
- Scanner scan = new Scanner(System.in);
- System.out.println(ENTER_CHOICE);
- do {
- Choice = scan.nextLine();
- if (Choice.equals("Key") || Choice.equals("File"))
- IsCorrect = false;
- else {
- System.out.println(ERROR0);
- IsCorrect = true;
- }
- }
- while (IsCorrect);
- return Choice;
- }
- static String enterFileName() {
- String NameFile;
- boolean IsCorrect;
- System.out.println(INPUT_NAME);
- Scanner scan = new Scanner(System.in);
- do {
- NameFile = scan.nextLine();
- File SFile = new File(NameFile);
- if (SFile.exists())
- IsCorrect = false;
- else {
- System.out.println(ERROR);
- IsCorrect = true;
- }
- }
- while (IsCorrect);
- return NameFile;
- }
- static String enterSequence(String fileName){
- String sentence = null;
- BufferedReader PReader = null;
- try {
- PReader = new BufferedReader(new FileReader(fileName));
- sentence = PReader.readLine();
- } catch (IOException e) {
- System.out.println(ERROR2);
- }
- return sentence;
- }
- static boolean checkEmptyFile(int num){
- boolean isCorrect = true;
- if (num == 0){
- System.out.println("Файл пуст. Повторите попытку.");
- isCorrect = false;
- }
- return isCorrect;
- }
- static boolean correctSequence(String sequence, int n ){
- int i = 0;
- boolean isCorrect = true;
- while ((i < n) && (isCorrect == true)){
- if (Symbols.contains(sequence.charAt(i)) || (Numbers.contains(sequence.charAt(i))))
- isCorrect = false;
- i++;
- }
- if (isCorrect == true) {
- System.out.println(ERROR1);
- }
- return isCorrect;
- }
- public static String CorrectSequenceKey (){
- int n;
- String sequence;
- boolean isCorrect;
- final int MIN_NUM = 2;
- System.out.println("Введите последовательность");
- do {
- Scanner scan = new Scanner(System.in);
- sequence = scan.nextLine();
- n = sequence.length();
- if (n < MIN_NUM) {
- System.out.println(ERROR1);
- isCorrect = true;
- }
- else {
- isCorrect = correctSequence(sequence, n);
- }
- }
- while(isCorrect);
- return sequence;
- }
- public static void enterArray(String sequence, int num) {
- int i,
- n = 0;
- for (i = 0; i < num; i++)
- if (Symbols.contains(sequence.charAt(i)) || (Numbers.contains(sequence.charAt(i)))) {
- Final_Array.add(sequence.charAt(i));
- n++;
- }
- }
- public static void outputArray(int n, String sequence){
- int i;
- System.out.println(COR_SEN);
- for(i = 0; i < n; i++)
- if (Final_Array.contains(sequence.charAt(i)))
- System.out.print(sequence.charAt(i) + ", ");
- System.out.println();
- }
- static void writeResultFile( int n, String sequence, String outputFileName){
- try {
- FileWriter WriteF = null;
- File Output = new File(outputFileName);
- WriteF = new FileWriter(Output,true);
- WriteF.write(FIR_SEN + "\n" + sequence + "\n" + COR_SEN + "\n");
- for (int i = 0; i < n; i++)
- if (Final_Array.contains(sequence.charAt(i)))
- WriteF.append(sequence.charAt(i) + ", " );
- WriteF.close();
- } catch (IOException e) {
- System.out.println(ERROR2);
- }
- }
- public static void main(String[] args) {
- int n = 0, num;
- String choice, sequence, fileName, outputFileName;
- boolean isCorrect = true;
- HashSet<Character> myHashSet = new HashSet<Character>();
- System.out.println(TASK);
- choice = EnterChoice();
- if (choice.equals("Key")){
- sequence = CorrectSequenceKey();
- num = sequence.length();
- }
- else{
- do{
- fileName = enterFileName();
- sequence = enterSequence(fileName);
- num = sequence.length();
- isCorrect = checkEmptyFile(num);
- isCorrect = correctSequence(sequence, num);
- }
- while(isCorrect);
- }
- System.out.println(FIR_SEN + "\n" + sequence);
- enterArray(sequence, num);
- outputArray(num, sequence);
- if (choice.equals("File")){
- System.out.println(RESULT_NAME);
- outputFileName = enterFileName();
- writeResultFile(num, sequence, outputFileName);
- System.out.println(MAS_F);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement