Skip to content

despis221-cmd/calculator

Repository files navigation

Java Calculator

본 프로젝트는 Java를 사용하여 구현한 사칙연산 계산기 프로그램이다. 기본적인 연산 수행뿐만 아니라 제네릭, 컬렉션, 람다, 스트림을 활용하여 연산 결과의 저장, 삭제, 조건별 조회 기능을 포함하고 있다.

개발 환경

  • Language: Java
  • IDE: IntelliJ IDEA
  • Key Concepts:
    • 구조화
    • Collection Framework
    • Generics
    • Enum
    • Lambda & Stream

주요 기능

1. 사칙연산 수행

  • Scanner를 통해 양의 정수 2개와 연산 기호(+, -, *, /)를 입력받아 연산을 수행한다.
  • OperatorType Enum을 사용하여 연산자 타입을 관리하고 분기 처리한다.
  • 나눗셈 연산 시 분모가 0일 경우 예외 메시지를 출력하고 연산을 실행하지 않는다.

2. 연산 결과 저장 및 관리

  • 모든 연산 결과는 Calculator 클래스 내부의 ArrayList에 저장된다.
  • 캡슐화 원칙에 따라 Getter/Setter 메서드를 활용해 데이터에 접근한다.

3. 결과 조회 및 필터링

  • 저장된 연산 결과 중 사용자가 입력한 기준 값보다 큰 값들을 필터링하여 출력한다.
  • StreamLambda를 활용하여 반복문 없이 간결한 로직으로 구현하였다.

4. 기록 수정 기능

  • 삭제: 가장 먼저 저장된 연산 결과 하나를 삭제한다.
  • 초기화: 저장된 모든 연산 기록을 초기화한다.

클래스 구조

App.java

  • 프로그램의 Main이며, 사용자와의 상호작용(입출력)을 담당한다.
  • Scanner 객체를 사용하여 입력을 받고, 입력된 명령어(exit, inquiry, remove, reset)에 따라 분기 처리한다.

Calculator.java

  • 연산의 로직을 담당하는 클래스이다.
  • 제네릭(<T extends Number>)을 사용하여 숫자 타입에 대한 유연성을 확보하였다.
  • 연산 결과를 리스트로 관리하며, inquiryResults 메서드를 통해 필터링 기능을 제공한다.

OperatorType.java

  • 사칙연산 기호(+, -, *, /)를 Enum으로 정의하여 관리한다.
  • 입력받은 char 타입의 연산자를 해당 Enum 타입으로 매핑해주는 classify 메서드를 포함한다.

실행 방법

  1. App.java를 실행한다.
  2. 콘솔 안내에 따라 첫 번째 숫자, 두 번째 숫자, 연산 기호를 입력한다.
  3. 연산 수행 후, 추가 작업을 원할 경우 아래 명령어를 입력한다.
    • inquiry: 기준값을 입력하여 그보다 큰 결과값들을 조회한다.
    • remove: 가장 오래된 연산 기록을 삭제한다.
    • reset: 모든 연산 기록을 삭제한다.
    • exit: 프로그램을 종료한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages