카테고리 없음

[TIL] Java 계산기 Step 2 완성

mooncommit 2026. 3. 24. 21:40
어제 블로그에 기본 구조를 정리할 때는 완벽히 이해하지 못했는데,
오늘 직접 코드를 짜면서 개념을 완전히 이해하고 혼자서 Step 2 계산기를 완성했다!

오늘 완성한 것

 

  • Calculator 클래스와 App 클래스를 분리해서 구현
  • getter, setter 개념 이해 및 활용
  • App에서 Calculator를 객체로 만들어서 활용
  • 결과 저장, 조회, 삭제 기능까지 구현 완료

전체 코드

Calculator.java

package calculator;

import java.util.ArrayList;

public class Calculator {

    ArrayList<Integer> results = new ArrayList<>();

    public int calculator(int first, int second, char operator) {
        int result = 0;

        switch (operator) {
            case '+': result = first + second;
                break;

            case '-': result = first - second;
                break;

            case '*': result = first * second;
                break;

            case '/':
                if (second == 0) {
                    System.out.println("0으로 나눌 수 없습니다.");
                    break;
                } else {
                    result = first / second;
                    break;
                }
            default:
                System.out.println("올바른 사칙연산을 입력해주세요.");
        }
        results.add(result);
        return result;
    }

    public ArrayList<Integer> getResults() {
        return results;
    }

    public void setResults() {
        this.results = results;
    }

    public void removeResults() {
        results.remove(0);
    }
}

 

 

App.java

package calculator;

import java.util.Scanner;

public class App {
    static void main() {

        Calculator calculator = new Calculator();
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("첫 번째 양의 정수를 입력하세요 : ");
            int first = scanner.nextInt();
            if (first < 0) {
                System.out.println("양의 정수를 입력해주세요.");
                continue;
            }

            System.out.println("두 번째 양의 정수를 입력하세요 : ");
            int second = scanner.nextInt();
            if (second < 0) {
                System.out.println("양의 정수를 입력해주세요.");
                continue;
            }

            System.out.println("사칙연산 기호를 입력하세요 : ");
            char operator = scanner.next().charAt(0);

            int result = calculator.calculator(first, second, operator);
            System.out.println("결과 : " + result);

            System.out.println("기록을 조회하시겠습니까?(yes 입력 시 조회) : ");
            String yes = scanner.next();
            if (yes.equals("yes")) {
                System.out.println("List : " + calculator.getResults());
            }

            System.out.println("첫 번째 기록을 삭제하시겠습니까?(yes 입력 시 삭제) : ");
            String yes2 = scanner.next();
            if (yes2.equals("yes")) {
                calculator.removeResults();
                System.out.println("삭제 완료");
            }

            System.out.println("현재 List : " + calculator.getResults());

            System.out.println("종료하려면 exit를 입력해주세요(아무거나 입력 시 계속) : ");
            String exit = scanner.next();
            if (exit.equals("exit")) {
                System.out.println("프로그램을 종료합니다.");
                break;
            }
        }
    }
}

오늘 핵심으로 배운 것

1. 클래스 분리 (Calculator vs App)

오늘 가장 중요하게 배운 것은 역할에 따라 클래스를 분리하는 것이다.

클래스 역할
Calculator 계산 로직 + 결과 저장
App 사용자 입력 받고 Calculator 활용

 

Calculator는 계산만 하고, App은 그걸 가져다 쓰는 구조다.

마치 계산기 기계(Calculator) 를 만들어놓고, 사람(App) 이 버튼을 누르는 것과 같다!

// App에서 Calculator 객체를 만들어서 활용!
Calculator calculator = new Calculator();
int result = calculator.calculator(first, second, operator);

2. getter / setter

results 필드는 private 으로 막혀있어서 외부에서 직접 접근이 불가능하다. 그래서 getter와 setter 를 통해서만 접근할 수 있다.

getter → 내 정보를 조회한다 setter → 내 정보를 수정한다

// getter - results 리스트를 꺼내줌
public ArrayList<Integer> getResults() {
    return results;
}

// setter - results 리스트를 교체함
public void setResults() {
    this.results = results;
}

 

이번 프로젝트에서 setter는 만들어만 놓고 활용하지 않았다.

이유는 결과를 통째로 교체할 일이 없었기 때문이다. 결과를 하나씩 추가할 때는 results.add() 를 직접 쓰는 게 더 자연스럽다.


3. App에서 Calculator 활용

// 계산 실행
int result = calculator.calculator(first, second, operator);

// 결과 조회 (getter 활용!)
System.out.println("List : " + calculator.getResults());

// 첫 번째 결과 삭제
calculator.removeResults();

 

Calculator 안에 있는 메서드를 App에서 이렇게 꺼내 쓸 수 있다는 게 오늘 핵심이었다!


실행 결과


느낀 점

 

어제 블로그에 개념을 정리할 때는 완벽히 이해하지 못했는데, 오늘 직접 코드를 짜면서 하나하나 이해하다 보니 Step 2 계산기를 혼자서 완성할 수 있었다. 오늘은 완전히 내 것으로 만든 것 같아서 뿌듯하다! 

 

내일은 강의 마지막까지 다 보고 도전 과제를 도전해볼 것이다!