본문 바로가기
자바/자바

[자바]Calc클래스를 슈퍼클래스로 이용하여 Add,Sub,Mul,Div클래스를 작성하시오

by 이얏호이야호 2020. 4. 28.

공부하시는대에 도움이 됐으면 좋겠습니다.

답안코드 확인해주세요!

 

더보기
import java.util.Scanner;



abstract class Calc {      //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 {      //Calc클래스를 상속하는 add클래스입니다.

   public int calculate() {      //a+b를 return합니다.

      return a + b;

   }

}



class Sub extends Calc {   //Calc클래스를 상속하는 Sub클래스입니다.

   public int calculate() {      //a-b를 return합니다.

      return a - b;

   }

}



class Mul extends Calc {   //Calc클래스를 상속하는 Mul클래스입니다.

   public int calculate() {      //a*b를 return합니다.

      return a * b;

   }

}



class Div extends Calc {   //Calc클래스를 상속하는 Div클래스입니다.

   public int calculate() {      //a/b를 return합니다.

      return a / b;

   }

}



public class makeCalc {



   public static void main(String[] args) {

      Scanner in = new Scanner(System.in);

      int result = 0;

      while (true) {      //잘못된 연산이 나오는 경우까지 프로그램을 실행합니다.

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

         int a = in.nextInt();

         int b = in.nextInt();         

         char c = in.next().charAt(0);

         Calc cal;

         switch (c) {

         case '+':         //+라면 +결과를 보여줍니다.

            cal = new Add();

            break;

         case '-':         //-라면 -결과를 보여줍니다.

            cal = new Sub();

            break;

         case '*':      //*라면 *결과를 보여줍니다.

            cal = new Mul();

            break;

         case '/':      // 나누기(/)라면 /결과를 보여줍니다.

            cal = new Div();

            break;

         default:      // + - * / 해당하는 문자가 아닌경우 프로그램이 종료됩니다.

            System.out.println("프로그램을 종료합니다.");            

            return;

         }

         cal.setValue(a, b);

         result = cal.calculate();

         System.out.println(result);

         

      }

   }

댓글