Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
i_fugas
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 33
#1

Проверить корректность ввода скобок! - Java SE

26.12.2017, 12:49. Просмотров 200. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста!
Для введенной с клавиатуры строки программа должна определить, корректно ли розставлены скобки(круглые, фигурные, квадратные).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2017, 12:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверить корректность ввода скобок! (Java SE):

Проверить код на корректность
Привет,можете пожалуйста проверить файл на ошибки,если таковых нет(что...

В данном тексте проверить баланс открывающих и закрывающих скобок
var str: string; i,s1,s2: integer; begin {суммам присваиваем значение...

Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке
Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной...

За один просмотр файла проверить баланс круглых скобок в тесте, используя стек
помогите, пожалуйста, решить Дан текстовый файл с программой на...

Файл: проверить файл на корректность данных с точностью до строки
Имеется текстовый файл Product. Необходимо проверить файл на корректность...

Проверить правильность ввода числа в двоичной и перевести число в десятичную систему счисления
Дано число в двоичной системе счисления. Проверить правильность ввода этого...

6
Aviz__
337 / 233 / 91
Регистрация: 17.02.2014
Сообщений: 1,777
26.12.2017, 13:16 #2
т.е. на каждую открытую, должна быть закрытая?
0
i_fugas
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 33
26.12.2017, 13:19  [ТС] #3
Именно, но я уже сделал.
Можете проверить
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.company;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        String str;
        int counter1 = 0;
        int counter2 = 0;
        int counter3 = 0;
        boolean result = false;
 
        Scanner sc = new Scanner(System.in);
        System.out.println("Введите свои примитивные скобки(круглые, фигурные, квадратные): ");
        str =sc.nextLine();
        sc.close();
 
        for(int i=0; i<str.length();i++)
        {
            if(str.charAt(i)=='('){counter1++;}
            else if (str.charAt(i) == ')') {counter1--; }
 
            if(str.charAt(i)=='['){counter2++;}
            else if (str.charAt(i) == ']') {counter2--; }
 
            if(str.charAt(i)=='{'){counter3++;}
            else if (str.charAt(i) == '}') {counter3--; }
        }
 
        if((counter1==0)&&(counter2==0)&&(counter3==0)) result=true;
        else result=false;
 
        System.out.println(result);
    }
}
0
Aviz__
337 / 233 / 91
Регистрация: 17.02.2014
Сообщений: 1,777
26.12.2017, 13:21 #4
i_fugas, а зачем, тогда, просил?((.
0
xoraxax
1229 / 1184 / 349
Регистрация: 05.07.2013
Сообщений: 5,735
Завершенные тесты: 1
26.12.2017, 13:39 #5
Цитата Сообщение от i_fugas Посмотреть сообщение
Можете проверить
прочитай про jUnit и запили тесты

для затравки
([строка)] вот это по-твоему корректно расставленные скобки?
1
iSmokeJC
Модератор
558 / 516 / 280
Регистрация: 21.10.2017
Сообщений: 1,856
26.12.2017, 17:59 #6
А если скобок 500? И в вперемешку с другими символами? Я как-то решил подобную задачу с помощью Stack. Если надо, вечером выложу.

Добавлено через 4 часа 2 минуты
Возвращает 1 если корректно, 0 - если нет.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.Scanner;
import java.util.Stack;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int res = 1;
        boolean stat = true;
        Stack<Character> stack = new Stack<>();
        stack.push(' ');
        System.out.print("Enter string: ");
        StringBuilder str = new StringBuilder(scan.nextLine());
 
        for (int i = 0; i < str.length(); i++) {
            switch (str.charAt(i)) {
                case '(':
                case '<':
                case '[':
                case '{':
                    stack.push(str.charAt(i));
                    break;
                case ')':
                    if ((stack.peek() != '(') || stack.empty()) {
                        stat = false;
                        break;
                    } else stack.pop();
                    break;
                case ']':
                    if ((stack.peek() != '[') || stack.empty()) {
                        stat = false;
                        break;
                    } else stack.pop();
                    break;
                case '}':
                    if ((stack.peek() != '{') || stack.empty()) {
                        stat = false;
                        break;
                    } else stack.pop();
                    break;
                case '>':
                    if ((stack.peek() != '<') || stack.empty()) {
                        stat = false;
                        break;
                    } else stack.pop();
                    break;
            }
            if (!stat) {
                res = 0;
                break;
            }
        }
        stack.pop();
        if (!stack.empty()) res = 0;
        System.out.print(res);
    }
}
0
Aviz__
337 / 233 / 91
Регистрация: 17.02.2014
Сообщений: 1,777
26.12.2017, 18:24 #7
Цитата Сообщение от xoraxax Посмотреть сообщение
([строка)] вот это по-твоему корректно расставленные скобки
а точно!!! Спасибо!
0
26.12.2017, 18:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2017, 18:24
Привет! Вот еще темы с решениями:

Корректность использования оператора return
Здравствуйте, столкнулся с вопросом: есть метод void, который работает при...

Корректность имеющейся UML - диаграммы
Есть код (надо было создать класс &quot;Квадрат&quot; поле - сторона, методы: площадь,...

Проверка e-mail адреса на корректность
Подскажите название метод проверки e-mail адреса на корректность. Типа наличие...

Как определить корректность заданного возраста (Тип результата boolean)
Возраст может принимать значения в диапазоне от 1-120. Вводимые значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru