아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
도덕적인가젤89
도덕적인가젤8921.04.05

자바프로그래밍 코드좀 알려주시면 감사하겠습니다!!

설명

철수 학생은 다음 3개의 필드와 메소드를 가진 4개의 클래스 Add, Sub, Mul, Div를 작성하려고 한다.

¤int 타입의 a, b필드 : 2개의 피연산자

¤void setValue(int a, int b) : 피연산자 값을 객체 내에 저장한다.

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

곰곰히 생각해 보니, Add, Sub, Mul, Div클래스에 공통된 필드와 메소드가 존재하므로 새로운 추상클래스 Calc를 작성하고 Calc를 상속받아 만들면 되겠다고 생각했다.

그리고 main() 메소드에서 다음 실행 사례와 같이 2개의 정수와 연산자를 입력 받은 후 Add, Sub, Mul, Div 중에서 이 연산을 처리할 수 있는 객체를 생성하고 setValue()와 calculate()를 호출하여 그 결과 값을 화면에 출력하면 된다고 생각하였다.

철수처럼 프로그램을 작성하라.

입력

2개의 int 타입 피연산자와 1개의 연산 기호 입력 받음

ex)

5 7 *

출력

계산 결과 출력

ex)

35

예시 입력 1

두 정수와 연산자를 입력하시오>>5 7 *

예시 출력 1

35

예시 입력 2

두 정수와 연산자를 입력하시오>>5 7 %

예시 출력 2

잘못된 연산자입니다.

예시 입력 3

두 정수와 연산자를 입력하시오>>5 0 /

예시 출력 3

계산할 수 없습니다.

55글자 더 채워주세요.
답변의 개수1개의 답변이 있어요!
  • 안녕하세요.

    질문 하신 부분에 대한 풀이 올려드리겠습니다.

    import java.util.Scanner;

    abstract class Calc {

    protected int a;

    protected int b;

    public void setValue(int a, int b) {

    this.a = a;

    this.b = b;

    }

    abstract int calculate();

    }

    class Add extends Calc {

    @Override

    public int calculate() {

    return a+b;

    }

    }

    class Sub extends Calc {

    @Override

    public int calculate() {

    return a-b;

    }

    }

    class Mul extends Calc{

    @Override

    public int calculate() {

    return a*b;

    }

    }

    class Div extends Calc{

    @Override

    public int calculate() {

    return a/b;

    }

    }

    public class Calculator {

    public static void main(String args[]) {

    Scanner sc = new Scanner(System.in);

    int a, b;

    String cal;

    System.out.print("두 정수와 연산자를 입력하시오>>");

    a = sc.nextInt();

    b = sc.nextInt();

    cal = sc.next();

    switch(cal) {

    case "+":

    Add add = new Add();

    add.setValue(a, b);

    System.out.println(add.calculate());

    break;

    case "-":

    Sub sub = new Sub();

    sub.setValue(a, b);

    System.out.println(sub.calculate());

    break;

    case "*":

    Mul mul = new Mul();

    mul.setValue(a, b);

    System.out.println(mul.calculate());

    break;

    case "/":

    Div div = new Div();

    div.setValue(a, b);

    System.out.println(div.calculate());

    break;

    default:

    System.out.println("error");

    }

    }

    }