TIL

[계산기 만들기] 계산기를 만들기 2일차

oceanflow 2025. 1. 6. 23:52
import java.util.LinkedList;
import java.util.Scanner;

public class App {
    public static void main(String[] args) {



        Scanner scan = new Scanner(System.in);
        Calculator cal = new Calculator();
        boolean reVal = true;
        int result = 0;

        while(reVal) {
            System.out.print("계산할 첫번째 숫자를 입력하세요! : ");
            int a = scan.nextInt();

            System.out.print("계산할 두번째 숫자를 입력하세요! : ");
            int b = scan.nextInt();

            System.out.print("사칙연산 기호를 입력하세요! : ");
            String c = scan.next();
            char allSym = c.charAt(0);

            cal.Calculate(a, b, allSym);
            LinkedList<Integer> results = cal.getResultData();

            if(results.size() > 6)
                cal.setRemoveFirstResult();

            System.out.println("결과 : " + results.getLast());
            System.out.println("========================");
            System.out.println("전체 계산 기록: " + results);
            System.out.println();

            System.out.println("더 계산하시겠습니까? (exit 입력 시 종료) : ");
            String rework = scan.next();

            if(rework.equals("exit")) {
                reVal = false;
            }
        }
    }
}
import java.util.ArrayList;
import java.util.LinkedList;

public class Calculator {

    int a; // 값 1
    int b; // 값 2
    char sym; // 연산 기호

    private LinkedList<Integer> resultData = new LinkedList<Integer>();

    public LinkedList<Integer> getResultData() {
        return resultData;
    }

    public void setRemoveFirstResult() {
                LinkedList<Integer> newList = new LinkedList<>(resultData);
                newList.remove(0);
                this.resultData = newList;
    }

    public void Calculate(int valA, int valB, char allSym) {
        a = valA;
        b = valB;
        sym = allSym;

        int result = 0;

        switch (allSym) {

            case '*':
                result = a * b;
                break;
            case '/':
                result = a / b;
                break;
            case '+':
                result = a + b;
                break;
            case '-':
                result = a - b;
                break;
            default:
                System.out.println("기호를 잘 못 입력했습니다!!! 다시 입력하세요!!!");
                break;
        }
        resultData.add(result);
    }
}

 

오늘은 첫날 했던 계산기를 연산 결과를 저장하고 결과값을 반환 하는 메서드와 컬렉션 타입 필드를 구현 하였고

캡슐화를 진행하였다.