오늘은 Java 콘솔 기반 계산기의 기능을 확장하고, 다양한 연산 기능을 추가하는 작업을 수행
특히 연산자 처리 방식 개선, 오류 해결, 그리고 프로그래머스 문제 풀이를 진행하며 Java의 기본 문법과 활용 방법을 익혔다.
OperatorType에서 sqrt와 sin이 동일한 's'로 매핑되어 있어 연산자가 올바르게 구별 불가.App.java에서 parsed[0].charAt(0)을 사용하여 연산자를 찾다 보니, 같은 앞글자를 가진 연산자(sqrt vs sin)를 구별할 수 없었음.OperatorType에서 sqrt를 'q'로 변경하여 sin과 구별parseExpression()에서 sqrt를 "qrt"로 변환하여 OperatorType과 일치App.java에서 getOperatorType(parsed[0])을 직접 호출하여 문자열을 전달하도록 수정public enum OperatorType {
add('+'), sub('-'), mul('*'), div('/'),
pow('^'), mod('%'),
log('l'), sin('s'), cos('c'), tan('t'), sqrt('q'); // sqrt를 'q'로 변경하여 충돌 방지
}
이제 sqrt(45)를 입력하면 sin(45)로 출력되지 않고, 정확한 결과 출력
sin, cos, tan) 지원Math.toRadians()를 활용하여 도 단위를 라디안 단위로 변환 후 계산result = Math.sin(Math.toRadians(fstValDouble));
result = Math.cos(Math.toRadians(fstValDouble));
result = Math.tan(Math.toRadians(fstValDouble));
이제 sin(30), cos(45), tan(60)이 정확한 값출력
pow), 나머지 (mod) 연산 추가result = Math.pow(fstValDouble, sndValDouble); // 거듭제곱
result = fstValDouble % sndValDouble; // 나머지 연산
이제 2^3 = 8, 10 % 3 = 1 연산을 수행 가능
두 정수의 합class Solution {
public long solution(int a, int b) {
long sum = 0;
int start = Math.min(a, b);
int end = Math.max(a, b);
for (int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
}
모든 정수를 더하는 for문을 활용하여 해결
짝수와 홀수 판별class Solution {
public String solution(int num) {
return (num % 2 == 0) ? "Even" : "Odd";
}
}
삼항 연산자를 활용하여 간결하게 해결
Math.toRadians()를 사용하지 않으면 삼각함수 계산이 잘못될 수 있음을 알게 됨.Math.pow(), Math.toRadians() 같은 내장 메서드를 적극 활용하면 코드를 훨씬 간결하게 만들 수 있음.Math 유틸리티 함수 활용법을 복습할 수 있었음.2 + 3 * 4)을 적용하여 계산기를 더욱 발전시키기!