Alyks

Untitled

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