일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바 유클리드
- 모던자바
- 스프링
- 래퍼타입
- toLowerCase()
- 최소공배수
- replaceAll()
- while과 two-pointer
- 프로그래머스 레벨1
- 유클리드호제법
- 베주계수
- isuppercase()
- 자바 최소공배수
- git 컨벤션
- 동일성과 동등성
- 스프링환경설정
- Git사용법
- StringBuilder
- 최대공약수
- 최대공약수와 최소공배수
- 자바 최대공약수
- string과 stringbuilder
- 스프링뼈대
- addDoc
- ineer join
- islowercase()
- 자바 스트링
- string
- sql 데이터형 변환
- stringbuilder의 reverse()
- Today
- Total
주노 님의 블로그
20240729 본캠프 11일차 TIL 본문
본캠프 11일차 내용 간단요약
- 09:00 ~ 10:00 : 코드카타
- 11:00 ~ 12:00 : 개인 과제
LV2 과제 개선 - 12:00 ~ 13:00 : 점심시간
- 13:00 ~ 15:00 : 개인 과제
LV3 - 1 공부 및 구현 - 15:00 ~ 16:00 : 개인과제
LV3 - 2 공부 및 구현 - 16:00 ~ 17:30 : 팀원 회의
- 18:00 ~ 19:00 : 저녁시간
- 19:00 ~ 21:00 : 개인과제
LV3 - 2 공부 및 구현
오늘 해야할 일✔️🔺❌
✔️ 스프링 강의 끝내기
🔺 과제 3
개인과제
과제 3-1
평소에 Enum타입을 딱 한번밖에 써보지 않아서
인터넷이랑 강의를 엄청 뒤졌다
package calculator;
//과제 3-1 enum타입
//기본적으로 열거형 값은, 표현의 간결함을 위해 열거형 값만 명시한다.
public enum OperatorType {
ADD(0,0,'+'),
SUBTRACT(0,0,'-'),
MULTIPLY(0,0,'*'),
DIVIDE(0,0,'/'),
MOD(0,0,'%');
private char operator;
private double num1;
private double num2;
OperatorType(double num1 , double num2, char operator) {
this.num1 = num1;
this.num2 = num2;
this.operator = operator;
}
public void setNum1(double num1) {
this.num1 = num1;
}
public void setNum2(double num2) {
this.num2 = num2;
}
}
이렇게 작성하려고 했지만
다른 oprator 클래스의 역할이 사라진다
그리고 enum타입에 과도하게 몰린것 같았다
public enum OperatorType {
ADD('+'),
SUBTRACT('-'),
MULTIPLY('*'),
DIVIDE('/'),
MOD('%');
private char operator;
OperatorType(char op) {
this.operator = op;
}
}
그래서 간략하게 수정을 하였다
operation type도 enum을 받아서 사용하기로 교체했다
그러고보니 값을 받을때는 char, 입력을 원하는 값은 OperatorType로 변환해줘야한다
여러 자료를 참고하다가
OPERATOR를 찾기위해서
stream을 이용하면 되겠다 싶었다
public static OperatorType checkOperator(char op) {
return Arrays.stream(values()).filter(x -> x.operator == op).findFirst().orElse(null);
}
stream을 사용해서 해당 operator를 찾는다
Cannot invoke "calculator.OperatorType.ordinal()" because "operator" is null
에러처리가 다르게 뜨는걸 봐서는 stream에서 null로 지정한 오류가뜨는것 같았다
stream은 optional객체를 반환해주니까 에러도 저렇게 뜨는걸로 판단된다.
참고자료
https://javacatcher.tistory.com/119
과제 3-2
아직 구현을 고민중이다.
제네릭으로 Calculator를 바꾸려면 아래 operator도 바꿔야하는데 생각보다 쉽지않았다
제네릭을 제대로 배우지 못해서 오류가뜨는데 일단 3-3을 먼저 시도하고 제네릭으로 바꾸는 방법을 택했다
과제 3-3
//과제 3-3 구현
public List<Double> printValueGreaterThan(double input, List<Double> results) {
return results.stream()
.filter(num -> num > input)
.collect(Collectors.toList());
}
arithmeticCalculator에 위 코드를 구현하였다
지금 입력값 보다 큰 값을 입력받아야하니 List자료형으로 하였고
stream의 필터와 컬렉션으로 반환을 하였다
'TIL' 카테고리의 다른 글
20240731 본캠프 13일차 TIL (0) | 2024.07.31 |
---|---|
20240730 본캠프 12일차 TIL (0) | 2024.07.30 |
20240726 본캠프 10일차 TIL (0) | 2024.07.26 |
20240725 본캠프 9일차 TIL (0) | 2024.07.25 |
20240724 본캠프 8일차 TIL (0) | 2024.07.24 |