2024. 9. 11. 08:54ㆍJava,Kotlin
※ 계산기 만들기
ㄴ 레벨 1,2,3으로 구성
★ 다양한 추가 기능에 대한 생각 및 레벨별로 기존 코드 유지를 위하여 레벨 1, 1_1 로 클래스를 새로 만들어서 진행한 점 양해부탁 드립니다. 레벨 2,3은 App클래스와 연동되도록 잘 진행하였습니다!
[ Lv.1 클래스 없이 계산기 만들기 ]
요구사항)
1. 양의 정수 2개를 입력 받기
2. 연산기호 1개를 입력 받기
3. 입력받은 숫자와 연산기호로 연산계산하고 결과 출력하기
4. 기본적으로 무한반복문을 실행하고 문자열 "exit" 입력했을때만 계산이 끝나도록
※ 주의사항ㄴ Scanner를 활용해서 양의정수와 기호를 입력 받기
ㄴ 변수를 요구사항에 맞는 타입으로 잘 선언하기
ㄴ 레벨1 위 요구사항까지의 코드
※ 어려웠던 부분 및 고민한 부분
ㄴ 다행히 Lv.1에서는 발생되지 않았음.
※ 추가사항
ㄴ "exit"입력하는 계산을 끝내겠습니까? 문구 나올때 계산을 계속 이어나갈 경우 추가 기능
ㄴ 첫번째 계산에서 나온 결과값을 가지고 두번째 계산부터 결과값을 기준으로 추가 연산 진행
ㄴ 위 기능을 위한 result, cnt등의 변수 생성
ㄴ cnt 변수를 증감시켜서 위 기능의 조건에 충족되도록 설정
ㄴ 추후에 계산 횟수같은 것을 구할때 cnt변수를 출력하면 횟수 추출 가능
ㄴ 불필요한 코드 줄이기 (전체 구문을 if문으로 진행했으나, 삼항연산자와 일부문구만 if문 진행하여 코드 줄이기)
ㄴ 정수 2개 입력시 예외처리
ㄴ 정수 예외처리와 "exit"입력시 break;로 처리하여 반복문 탈출하도록
ㄴ 추가사항 반영된 코드
[ Lv.2 클래스 사용하여 계산기 만들기 ]
요구사항)
1. 사칙연산 수행 후 결과값을 저장하는 메서드를 Calculator 클래스에서 생성
2. 위 메서드의 결과를 저장하는 컬렉션 타입필드를 생성
3. 레벨 1에서 활용한 App클래스에서 Calculator 클래스를 활용할 수 있도록 수정
4. App클래스에서 Calculator클래스에서 생성한 컬렉션필드를 직접적으로 접근하지 못하도록 설정
ㄴ getter, setter메서드를 활용해서 간접적으로 접근하도록 설정
ㄴ Calculator 클래스
ㄴ 요구사항 1,2과정 완료
ㄴ App 클래스
ㄴ 요구사항 3,4과정 완료
※ 어려웠던 부분 및 고민한 부분
ㄴ getter, setter 메서드 사용할때 실수가 있었어서 조금 헤맸었다.
ㄴ 트러블 슈팅에도 내용이 있지만, 메서드의 결과값을 따로 출력하지 않고, 값이 출력이 안되어서 혼자 헤매고있었다... (getList 메서드에서 지금 캡쳐본엔 출력문이 있지만, 기존엔 출력문이 없고, return도 하지않았고 App클래스에서 메서드를 출력하고 있지 않았는데 왜 출력이 안되는지 혼자 고민하고 있었다...)
ㄴ 정신차릴 필요성이 있다고 느꼈다.
[ Lv.3 Enum, Generic, 람다식 활용한 계산기 만들기 ]
요구사항)
1. Enum 타입으로 연산자 기호를 관리하고 계산기에 적용
2. 제네릭형태로 변경하고 기존의 int타입 말고 여러타입으로 받을수 있도록 수정
ㄴ 계산기 메서드도 위 2가지 요구사항에 걸맞게 함께 수정
3. 람다 & 스트림을 활용하여 Scanner로 입력받은 값보다 큰 값을 출력
ㄴ 미완성
※ 어려웠던 부분 및 고민한 부분
ㄴ Enum을 활용하는법
ㄴ 제네릭과 Enum을 활용한 계산기 메서드 생성
ㄴ 람다식 & 스트림을 활용한 전체 코드 간소화 및 메서드 수정
ㄴ 완성본
ㄴ 검색을 통해서 enum과 람다식을 활용한 계산기 기능을 구현했다.
ㄴ enum에서 각 연산기호에 대해서 이름과 연산기호 람다식을 활용한 계산까지 한번에 진행
ㄴ BiFunction 함수형 인터페이스를 사용한다.
ㄴ 아래에서 function.apply를 활용해서 숫자만 입력받고 기호 없이 계산을 진행한다.
ㄴ 객체와 함수를 호출해서 apply를 바로 활용한다.
'Java,Kotlin' 카테고리의 다른 글
[7] Java/Kotlin - java 2차 개인과제 (1차) (4) | 2024.09.23 |
---|---|
[6] Java/Kotlin - java 1차 개인과제 트러블 슈팅 (0) | 2024.09.11 |
[4] Java/Kotlin - java문법 2주차 과제 (0) | 2024.09.03 |
[3] Java/Kotlin - java문법 1주차 과제 (4) | 2024.09.02 |
[2] Java/Kotlin - 음료 자판기 만들기 (1) | 2024.09.02 |