20240710 (수) 자바계산기 레벨2 제작 완료

2024. 7. 10. 18:00카테고리 없음

자바 레벨2 계산기를 제작했다.
전체적으로 진행과정은 이렇다.

메인에서 칼큘레이터 클래스를 호출을 할거고
칼큘레이터 클래스는
1. 숫자를 입력하라는 알림과 입력받은 숫자를 변수로 저장함
2. 1번을 총 2번반복해서 숫자를 2번받고 다음에는 사칙연산 기호를 입력받음
3. 추상클래스를 호출해서 입력받은 사칙연산과 숫자를 넘겨줌
추상클래스는
1. 입력받은 사칙연산 기호에따라 여러가지 클래스를 다시 호출함
2. +라면 더하기클래스 -면 빼기 클래스 등등
이후 각각의 하위클래스에서는
1. 입력받은 숫자와 기호를 이용해 계산을 한후 반환해줌 이 반환받은 답변은 추상클래스를 지나서 칼큘레이터 클래스쪽으로 돌아감

이런식으로 계산이 이루어진다.

 

가장 중요해보이는 클래스 몇개만 코드로 옮겨적는다.

package calcul.operation;

import calcul.calculate.Add;
import calcul.calculate.Divide;
import calcul.calculate.Multiply;
import calcul.calculate.Subtract;
import exception.InvalidInputException;

public class OperationFactory {
    public static Operation getOperation(char operator) throws InvalidInputException {
        switch (operator) {
            case '+':
                return new Add();
            case '-':
                return new Subtract();
            case '*':
                return new Multiply();
            case '/':
                return new Divide();
            default:
                throw new InvalidInputException("잘못된 연산 기호입니다: " + operator);
        }
    }
}
package calcul.operation;

public abstract class Operation {
    public abstract double calculate(double num1, double num2);
}
package calcul;


import calcul.operation.Operation;
import calcul.operation.OperationFactory;
import exception.InvalidInputException;

import java.util.Scanner;

public class Calculator {
    public void performCalculation() {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("첫 번째 숫자를 입력하세요: ");
            double num1 = scanner.nextDouble();

            System.out.print("두 번째 숫자를 입력하세요: ");
            double num2 = scanner.nextDouble();

            System.out.print("사칙연산 기호를 입력하세요 (+, -, *, /): ");
            char operator = scanner.next().charAt(0);

            Operation operation = OperationFactory.getOperation(operator);

            double result = operation.calculate(num1, num2);

            System.out.println("결과: " + result);
        } catch (InvalidInputException e) {
            System.out.println(e.getMessage());
        }
    }
}