Поиск номеров в круглых скобках

71
9

как часть моего проекта, я должен иметь возможность добавлять числа внутри этих круглых скобок, я работал над ним слишком долго, но результата не получал, я бы оценил любую помощь


String[] s = "1 2 3 ( 4 5 6 ) * 1000 7 8".split("\\s");

например, в этом случае есть 3 числа


Это то, что у меня есть до сих пор:


while(st.hasMoreTokens()) {
if ( st.nextToken() != "(" )
count = count +1 ;
}
if ( st.nextToken() == "(" )
while (st.nextToken() != ")") {
count2 = count2 + 1;
}
System.out.println(count); System.out.println(count2);
}

спросил(а) 2012-03-14T04:45:00+04:00 8 лет, 7 месяцев назад
1
Решение
71

Не удалось получить здесь прецедент. Предполагая, что у вас всегда будет только один набор paranthesis [ "(" and ")" ], никогда не будет несоответствия paranthesis, и вам все равно, что другие цифры/цифры/операторы находятся за пределами paranthesis, легкий путь для добавления чисел между paranthesis будет


String mainStr = "1 2 3 ( 4 5 6 ) * 1000 7 8";
String []inside = mainStr.substring(mainStr.indexOf("(")+1, mainStr.indexOf(")")
.split("\s");
int sum = 0;
int innerNum = 0;
for (int i=0; i<inside.length;i++) {
try {
innerNum = Integer.parseInt(inside[i]);
} catch (NumberFormatException e) {
innerNum = 0;
}
sum = sum + innerNum;
}
return sum;

Для нескольких наборов paranthesis (которые не вложены) мы можем перебрать mainStr, чтобы получить следующий набор, и действовать таким же образом

ответил(а) 2012-03-14T04:58:00+04:00 8 лет, 7 месяцев назад
57

Если вы хотите отслеживать круглые скобки и оценивать свою строку как уравнение, вы можете посмотреть алгоритм Shunting-yard.

ответил(а) 2012-03-14T05:28:00+04:00 8 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема