Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Scanner;
- public class Main {
- static boolean isBalanced(String str) {
- int count = 0;
- int i = 0;
- boolean continueCycle = true;
- while (i < str.length() && continueCycle) {
- char curr = str.charAt(i);
- if (curr == '(')
- count++;
- else if (curr == ')') {
- if (count == 0)
- continueCycle = false;
- else
- count--;
- }
- i++;
- }
- return continueCycle && count == 0;
- }
- static boolean isStringContainsParentheses(String str) {
- return str.contains("(") || str.contains(")");
- }
- static String readFile(String filePath) {
- String str = "";
- try (FileReader fr = new FileReader(filePath)) {
- Scanner frScan = new Scanner(fr);
- if (frScan.hasNext())
- str = frScan.nextLine();
- } catch (IOException err) {
- System.out.println("Произошла ошибка при чтении файла. Убедитесь, что такой файл существует, либо проверьте имя файла.");
- }
- return str;
- }
- static void saveResult(String resultStr) {
- Scanner scan = new Scanner(System.in);
- String decision = "";
- while (!decision.equals("Y") && !decision.equals("N")) {
- System.out.println("Сохранить результат в файл? (Y - сохранить, N - не сохранять)");
- decision = scan.nextLine();
- }
- if (decision.equals("Y")) {
- try (FileWriter fw = new FileWriter("output.txt", false)) {
- fw.write(resultStr);
- System.out.println("Результат сохранен в файл output.txt");
- } catch (IOException err) {
- System.out.println("Произошла ошибка при попытке записи результата в файл");
- }
- }
- }
- public static void main(String[] args) {
- System.out.println("Данная программа проверяет баланс скобок в строке\n");
- Scanner scan = new Scanner(System.in);
- String inputType = "";
- while (!inputType.equals("C") && !inputType.equals("F")) {
- System.out.println("Введите C, если хотите ввести строку из консоли, или F, если хотите ввести строку из файла");
- inputType = scan.nextLine();
- }
- boolean result = false;
- String str = "";
- if (inputType.equals("C")) {
- System.out.println("Введите строку, для которой необходимо проверить баланс скобок");
- str = scan.nextLine();
- } else if (inputType.equals("F")) {
- System.out.println("Введите путь к файлу");
- String filePath = scan.nextLine();
- str = readFile(filePath);
- }
- String resultStr = "";
- result = isStringContainsParentheses(str);
- if (result) {
- result = isBalanced(str);
- resultStr = result ? "Баланс скобок соблюдён" : "Баланс скобок не соблюдён";
- } else
- resultStr = "В строке отсутсвуют скобки";
- System.out.println(resultStr);
- saveResult(resultStr);
- }
- }
Add Comment
Please, Sign In to add comment