- 콘솔 기반
- 0 이상의 양의 정수(+실수) 2가지
- 수행할 사칙연산의 기호(+,-,*,/)
- 0 이상의 실수만 입력하게 하기
- int. double 범위를 넘어가는 수 입력 못받게 처리
- 나누기에 분모 0 못오게 처리
- 각 입력에 주어진 포멧이 들어오지 않으면 다시 입력받게 하기
- 양의 정수(0 포함)를 입력받기 (2025. 02. 26)
- 사칙연산 기호(➕,➖,✖️,➗)를 입력받기 (2025. 02. 26)
- 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기 (2025. 02. 26)
- 입/출력은 콘솔기반 (2025. 02. 26)
- 반복문을 사용 (2025. 02. 26)
- 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행 (2025. 02. 26)
- InputMismatchException 예외 처리 (제대로된 정수값이 들어오지 않을 경우 대비(2025.02.27)
- Calculator 클래스의 연산 결과를 저장하고 있는 컬렉션 필드를 읽기 (2025. 02. 27)
- 가장 먼저 저장된 데이터를 삭제하는 기능 (2025. 02. 27)
- 저장된 값들을 index로 접근하고 수정/삭제하는 기능 (2025.03.04)
- double이 분모일 때 나누기 0해도 예외 작동 안하는 것 수정 (2025.03.05)
- 양의 정수(0 포함)를 입력받기 (2025.03.04)
- 사칙연산 기호(➕,➖,✖️,➗)를 입력받기 (2025.03.04)
- Enum 타입을 활용하여 연산자 타입에 대한 정보를 관리 (2025.03.04)
- int,double을 모두 호환하고 숫자를 가리키는 제네릭 클래스 생성 (2025.03.04)
- ArithmeticCalculator 클래스를 제네릭으로 수정 (2025.03.05)
- ArithmeticCalculator클래스 에서는 "계산"에 관련된 함수만 남김 (2025.03.05)
- main함수에서 scanner이용으로 입력받기( 다른 클래스 에서는 스캐너이용 x, 사용자입력 x) (2025.03.05)
- Enum 타입을 활용하여 연산자 타입에 대한 정보를 관리 (2025.03.05)
- RecordController 클래스에서는 계산 기록에 관련된 함수만 남김 (2025.03.05)
- 기록 접근할 때 파라미터에 인덱스가 들어가는 경우를 대비해 IndexOutOfBoundsException 예외 처리 (2025.03.05)
-
양의 정수(0 포함)를 입력받기
- Scanner를 사용하여 양의 정수 2개(0 포함)를 전달 받을 수 있습니다.
- 양의 정수는 각각 하나씩 전달 받습니다.
- 양의 정수는 적합한 타입으로 선언한 변수에 저장합니다.
-
사칙연산 기호(➕,➖,✖️,➗)를 입력받기
- Scanner를 사용하여 사칙연산 기호를 전달 받을 수 있습니다.
- 사칙연산 기호를 적합한 타입으로 선언한 변수에 저장합니다.
-
위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기
- 사칙연산 기호에 맞는 연산자를 사용하여 연산을 진행합니다.
- 입력받은 연산 기호를 구분하기 위해 제어문을 사용합니다. (예를 들면 if, switch)
- 연산 오류가 발생할 경우 해당 오류에 대한 내용을 정제하여 출력합니다.
- ex) “나눗셈 연산에서 분모(두번째 정수)에 0이 입력될 수 없습니다.“
-
반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기
-
사칙연산을 수행 후, 결과값 반환 메서드 구현 & 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성
- 사칙연산을 수행한 후, 결과값을 반환하는 메서드 구현
- 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성
- 1) 양의 정수 2개(0 포함)와 연산 기호를 매개변수로 받아 사칙연산(➕,➖,✖️,➗) 기능을 수행한 후
- 2) 결과 값을 반환하는 메서드와 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성합니다.
-
Lv 1에서 구현한 App 클래스의 main 메서드에 Calculator 클래스가 활용될 수 있도록 수정
- 연산 수행 역할은 Calculator 클래스가 담당
- 연산 결과는 Calculator 클래스의 연산 결과를 저장하는 필드에 저장
- 소스 코드 수정 후에도 수정 전의 기능들이 반드시 똑같이 동작해야합니다.
- 연산 수행 역할은 Calculator 클래스가 담당
-
App 클래스의 main 메서드에서 Calculator 클래스의 연산 결과를 저장하고 있는 컬렉션 필드에 직접 접근하지 못하도록 수정 (캡슐화)
- 간접 접근을 통해 필드에 접근하여 가져올 수 있도록 구현합니다. (Getter 메서드)
- 간접 접근을 통해 필드에 접근하여 수정할 수 있도록 구현합니다. (Setter 메서드)
- Calculator 클래스에 저장된 연산 결과들 중 가장 먼저 저장된 데이터를 삭제하는 기능을 가진 메서드를 구현한 후 App 클래스의 main 메서드에 삭제 메서드가 활용될 수 있도록 수정
- 현재 사칙연산 계산기는 (➕,➖,✖️,➗) 이렇게 총 4가지 연산 타입으로 구성되어 있습니다.
- Enum 타입을 활용하여 연산자 타입에 대한 정보를 관리하고 이를 사칙연산 계산기 ArithmeticCalculator 클래스에 활용 해봅니다.
- 실수, 즉 double 타입의 값을 전달 받아도 연산이 수행하도록 만들기
- 단순히, 기존의 Int 타입을 double 타입으로 바꾸는 게 아닌 점에 주의하세요!
- 지금까지는 ArithmeticCalculator, 즉 사칙연산 계산기는 양의 정수(0 포함)를 매개변수로 전달받아 연산을 수행
- 피연산자를 여러 타입으로 받을 수 있도록 기능을 확장
- ArithmeticCalculator 클래스의 연산 메서드(
calculate)
- ArithmeticCalculator 클래스의 연산 메서드(
- 위 요구사항을 만족할 수 있도록 ArithmeticCalculator 클래스를 수정합니다. (제네릭)
- 저장된 연산 결과들 중 Scanner로 입력받은 값보다 큰 결과값 들을 출력
- ArithmeticCalculator 클래스에 위 요구사항을 만족하는 조회 메서드를 구현합니다.
- 단, 해당 메서드를 구현할 때 Lambda & Stream을 활용하여 구현합니다.
- Java 강의에서 람다 & 스트림을 학습 및 복습 하시고 적용 해보세요!





