return needToPlus.sum * rs;
-(10 + 5) => (10 + 5) * -1
if(exp.startsWith("-")= false) return false;
if (isNegativeCaseBracket(exp)) {
exp = exp.substring(1) + " * -1";
private static int findSplitPointIndexBy(String exp, char findChar) {
int bracketCount = 0;
for (int i = 0; i < exp.length(); i++) {
char c = exp.charAt(i);
if (c == '(') {
bracketCount++;
} else if (c == ')') {
bracketCount--;
} else if (c == findChar) {
if (bracketCount == 0) return i;
}
}
return -1;
}
else if (c == findChar) {
if (bracketCount == 0) return i;
// 음수괄호 패턴이면, 기존에 갖고있던 해석 패턴과는 맞지 않으니 패턴을 변경
int[] pos = null;
while ((pos = findNegativeCaseBracket(exp)) != null) {
exp = changeNegativeBracket(exp, pos[0], pos[1]);
-(10+5) == -15
private static boolean isNegativeCaseBracket(String exp) {
if (exp.startsWith("-(") == false) return false;
int bracketCount = 0;
for(int i = 0; i < exp.length(); i++) {
char c = exp.charAt(i);
if (c == '(') {
bracketCount++;
} else if (c == ')') {
bracketCount--;
}
if (bracketCount == 0){
if(exp.length() -1 ==i) return true;
}
}
return false;
}
-isNegativeCaseBracket 가 참이면 식의 패턴을 바꾸는 조건식
if(isNegativeCaseBracket (exp)){
exp = exp.substring(1) + "* -1";
}
https://m.blog.naver.com/zzang9ha/222039898629