본문 바로가기
Java

[Java] 명품 자바프로그래밍 제 4장 실습문제 5번

by graygreat 2017. 4. 11.
728x90
반응형


5. 다수의 클래스를 정의하고 활용하는 연습을 해보자. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 수행하는 각 클래스 

Add, Sub, Mul, Div를 만들어라. 이들은 모두 다음 필드와 메소드를 가진다.


● int 타입의 a, b 필드 : 연산하고자 하는 피연산자

● void setValue(int a, int b) : 피연산자를 객체 내에 설정한다.

● int calculate() : 해당 클래스의 목적에 맞는 연산을 실행하고 그 결과를 리턴한다.


Add 클래스 : int a, int b, setValue(), calculate()

Sub 클래스 : int a, int b, setValue(), calculate()

Mul 클래스 : int a, int b, setValue(), calculate()

Div 클래스 : int a, int b, setValue(), calculate()


main() 메소드에서는 다음 실행 사례의 그림과 같이 키보드로부터 두 정수와 계산하고자 하는 연산자를 입력받은 후 

Add, Sub, Mul, Div 중에서 이 연산을 실행할 수 있는 객체를 생성하고 setValue()와 calculate()를 호출하여 

그 결과 값을 화면에 출력한다.

------------------------------------------------------------

두 정수와 연산자를 입력하시오>> 3 4 +

7

-------------------------------------------------------------


import java.util.*;

public class Calc {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num1, num2;
        char op;
        System.out.print("두 정수와 연산자를 입력하시오>> ");
        num1 = scanner.nextInt();
        num2 = scanner.nextInt();
        op = scanner.next().charAt(0);

        switch (op) {
        case '+':
            Add add = new Add();
            add.setValue(num1, num2);
            System.out.println(add.calculate());
            break;
        case '-':
            Sub sub = new Sub();
            sub.setValue(num1, num2);
            System.out.println(sub.calculate());
            break;
        case '*':
            Mul mul = new Mul();
            mul.setValue(num1, num2);
            System.out.println(mul.calculate());
            break;
        case '/':
            Div div = new Div();
            div.setValue(num1, num2);
            System.out.println(div.calculate());
            break;
        }
    }
}

// 덧셈 
class Add {
    private int a, b;

    void setValue(int a, int b) {
        this.a = a;
        this.b = b;
    }

    int calculate() {
        return a + b;
    }
}

// 뺼셈
class Sub {
    private int a, b;

    void setValue(int a, int b) {
        this.a = a;
        this.b = b;
    }

    int calculate() {
        return a - b;
    }
}

// 곱셈
class Mul {
    private int a, b;

    void setValue(int a, int b) {
        this.a = a;
        this.b = b;
    }

    int calculate() {
        return a * b;
    }
}

// 나눗셈
class Div {
    private int a, b;

    void setValue(int a, int b) {
        this.a = a;
        this.b = b;
    }

    int calculate() {
        return a / b;
    }
}




못 풀면 심각한 난이도의 쉬운 문제

반응형

댓글