Advertisement
Alyks

Untitled

Dec 9th, 2019
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.72 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.util.Scanner;
  7. import java.util.Stack;
  8.  
  9. public class Main {
  10.     static boolean isBalanced(String str) {
  11.         Stack<Character> stack = new Stack<>();
  12.         int i = 0;
  13.         boolean continueCycle = true;
  14.         while (i < str.length() && continueCycle) {
  15.             char curr = str.charAt(i);
  16.             if (curr == '(')
  17.                 stack.push(curr);
  18.             else if (curr == ')') {
  19.                 if (stack.empty())
  20.                     continueCycle = false;
  21.                  else
  22.                     stack.pop();
  23.             }
  24.             i++;
  25.         }
  26.  
  27.         return continueCycle;
  28.     }
  29.  
  30.     static boolean isStringContainsParentheses(String str) {
  31.         return str.contains("(") || str.contains(")");
  32.     }
  33.  
  34.     static String readFile(String filePath) {
  35.         String str = "";
  36.         try (FileReader fr = new FileReader(filePath)) {
  37.             Scanner frScan = new Scanner(fr);
  38.             if (frScan.hasNext())
  39.                 str = frScan.nextLine();
  40.         } catch (IOException err) {
  41.             System.out.println("Произошла ошибка при чтении файла. Убедитесь, что такой файл существует, либо проверьте имя файла.");
  42.         }
  43.         return str;
  44.     }
  45.  
  46.     static void saveResult(String resultStr) {
  47.         Scanner scan = new Scanner(System.in);
  48.         String decision = "";
  49.         while (!decision.equals("Y") && !decision.equals("N")) {
  50.             System.out.println("Сохранить результат в файл? (Y - сохранить, N - не сохранять)");
  51.             decision = scan.nextLine();
  52.         }
  53.         if (decision.equals("Y")) {
  54.             try (FileWriter fw = new FileWriter("output.txt", false)) {
  55.                 fw.write(resultStr);
  56.                 System.out.println("Результат сохранен в файл output.txt");
  57.             } catch (IOException err) {
  58.                 System.out.println("Произошла ошибка при попытке записи результата в файл");
  59.             }
  60.         }
  61.     }
  62.  
  63.     public static void main(String[] args) {
  64.         System.out.println("Данная программа проверяет баланс скобок в строке\n");
  65.         Scanner scan = new Scanner(System.in);
  66.         String inputType = "";
  67.         while (!inputType.equals("C") && !inputType.equals("F")) {
  68.             System.out.println("Введите C, если хотите ввести строку из консоли, или F, если хотите ввести строку из файла");
  69.             inputType = scan.nextLine();
  70.         }
  71.         boolean result = false;
  72.         String str = "";
  73.         if (inputType.equals("C")) {
  74.             System.out.println("Введите строку, для которой необходимо проверить баланс скобок");
  75.             str = scan.nextLine();
  76.         } else if (inputType.equals("F")) {
  77.             System.out.println("Введите путь к файлу");
  78.             String filePath = scan.nextLine();
  79.             str = readFile(filePath);
  80.         }
  81.  
  82.         String resultStr = "";
  83.         result = isStringContainsParentheses(str);
  84.         if (result) {
  85.             result = isBalanced(str);
  86.             resultStr = result ? "Баланс скобок соблюдён" : "Баланс скобок не соблюдён";
  87.         } else
  88.             resultStr = "В строке отсутсвуют скобки";
  89.         System.out.println(resultStr);
  90.         saveResult(resultStr);
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement