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());
}
}
}