본문
[2017.09.15] 04. Calculator 프로젝트 [괄호O - Stack 사용X]
컴퓨터/이론: 안드로이드 2017. 9. 15. 09:16
중요 로직
중요 로직은 아래의 그림으로 먼저 확인하자.
이전에 구현한 괄호가 없는 계산기(http://heepie.tistory.com/64)를 활용한 괄호가 있는 계산기이다.
괄호의 위치를 찾아 괄호 안의 연산을 처리한 후 결과를 다시 넣는 방법을 반복한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | private static double noStackCalc(String target) { int subStartIdx; int subEndIdx; double subResult; // 괄호가 있는 연산 처리 while(!target.equals("")) { // ")" 인덱스 찾기 // ")" 인덱스를 기준으로 "(" 찾기 subEndIdx = target.indexOf(")"); if (subEndIdx == -1) break; subStartIdx = target.lastIndexOf("(", subEndIdx); subResult = calc(target.substring(subStartIdx + 2, subEndIdx-1)); // 새로운 연산 대상 생성 target = target.substring(0, subStartIdx) + " " + subResult + " " + target.substring(subEndIdx+1, target.length()); } // 괄호가 없는 연산 처리 subResult = calc(target); return subResult; } | cs |
문제점 및 해결
- 괄호를 찾는 방법에 대한 고민
앞에서 부터 "("를 먼저 찾을 경우, 마지막 괄호를 찾기 때문에 첫번째 괄호를 찾을 수 없었다. 그래서 ")"를 먼저 찾은 후 ")"의 인덱스를 기준으로 뒤에서부터 "("를 찾아 괄호 위치 찾기를 해결했다.1234567// ")" 인덱스 찾기int subEndIdx = target.indexOf(")");if (subEndIdx == -1)break;// ")" 인덱스를 기준으로 "(" 찾기int subStartIdx = target.lastIndexOf("(", subEndIdx);cs
스크린 샷
#안드로이드 계산기 #사칙연산 #사칙연산 로직 #계산기 방법 #계산기 괄호
'컴퓨터 > 이론: 안드로이드' 카테고리의 다른 글
[2017.09.17] 06. 안드로이드 애니메이션 (0) | 2017.09.17 |
---|---|
[2017.09.16] 05. 각종 View와 ViewGroup (0) | 2017.09.15 |
[2017.09.14] 03. Calculator 프로젝트 [괄호O - Stack 사용O] (6) | 2017.09.14 |
[2017.09.14] 02. Calculator 프로젝트 [괄호X] (0) | 2017.09.14 |
[2017.09.13] 01. Calculator 프로젝트 설명과 목적 (0) | 2017.09.13 |
댓글