문제
아래의 6개의 클래스를 작성하고, 메인에서 아래와 같은 실행결과를 출력하시오(추상 클래스)
Calc, Add, Sub, Mul, Div, Calculator
Calc Class(조상 / 추상 클래스)
멤버변수
double a
double b
멤버함수
void setValue(double, double)
abstract double calculate(void) *추상메서드
Add Class(자식클래스)
멤버함수
abstract double calculate(void) *오버라이딩
Sub Class(자식클래스)
멤버함수
abstract double calculate(void) *오버라이딩
Mul Class(자식클래스)
멤버함수
abstract double calculate(void) *오버라이딩
DIv Class(자식클래스)
멤버함수
abstract double calculate(void) *오버라이딩
Calculator(실행클래스)
결과
두 정수와 연산자를 입력하시오.
종료를 원하시면 -1을 입력해주세요>>1 9 +
1.0 + 9.0 = 10.0
두 정수와 연산자를 입력하시오.
종료를 원하시면 -1을 입력해주세요>>10 20 -
10.0 - 20.0 = -10.0
두 정수와 연산자를 입력하시오.
종료를 원하시면 -1을 입력해주세요>>25 25 *
25.0 * 25.0 = 625.0
두 정수와 연산자를 입력하시오.
종료를 원하시면 -1을 입력해주세요>>100 26 /
100.0 / 26.0 = 3.8461538461538463
두 정수와 연산자를 입력하시오.
종료를 원하시면 -1을 입력해주세요>>10 2 =
잘못된 연산자입니다.
두 정수와 연산자를 입력하시오.
종료를 원하시면 -1을 입력해주세요>>-1
계산기를 종료합니다.
코드
abstract class Calc {
double a;
double b;
void setValue(double a, double b) {
this.a = a;
this.b = b;
}
abstract double calculate();
}
class Add extends Calc {
double calculate() {
return a + b;
}
}
class Sub extends Calc {
double calculate() {
return a - b;
}
}
class Mul extends Calc {
double calculate() {
return a * b;
}
}
class Div extends Calc {
double calculate() {
return a / b;
}
}
class Calculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("두 정수와 연산자를 입력하시오.");
System.out.print("종료를 원하시면 -1을 입력해주세요>>");
double n1 = sc.nextInt();
if (n1 == -1) {
System.out.println("계산기를 종료합니다.");
break;
}
double n2 = sc.nextInt();
String operator = sc.next();
if (operator.equals("+")) {
Add add = new Add();
add.setValue(n1, n2);
System.out.println(n1 + " " + " + " + n2 + " = " + (n1 + n2));
System.out.println();
}
else if (operator.equals("-")) {
Sub sub = new Sub();
sub.setValue(n1, n2);
System.out.println(n1 + " " + " - " + n2 + " = " + (n1 - n2));
System.out.println();
}
else if (operator.equals("*")) {
Mul mul = new Mul();
mul.setValue(n1, n2);
System.out.println(n1 + " " + " * " + n2 + " = " + (n1 * n2));
System.out.println();
}
else if (operator.equals("/")) {
Div div = new Div();
div.setValue(n1, n2);
System.out.println(n1 + " " + " / " + n2 + " = " + (n1 / n2));
System.out.println();
}
else {
System.out.println("잘못된 연산자입니다.");
System.out.println();
}
}
}
}
'Java' 카테고리의 다른 글
| [Java] interface (17-1) (0) | 2023.08.30 |
|---|---|
| [Java] (추상 클래스) (16-2) (0) | 2023.08.30 |
| [Java] 클래스 (상속, 오버라이딩, 다형성, 스택, 팝) (15) (0) | 2023.08.27 |
| [Java] 클래스 (상속, 오버라이딩, 다형성) (15) (0) | 2023.08.27 |
| [Java] 단축키 (0) | 2023.08.24 |