본문 바로가기

개인 공부방/JAVA

자바 계산기 v2

자바 계산기 v1 확장.
•Add, Sub, Mul, Div 클래스에 공통된 필드와 메소드가 존재하므로 새로운 추상 클래스 Calc를 정의하고 이들이 Calc를 상속받게 하라.

 

 


 

Cal.java

 

import java.util.Scanner;

public class Cal {
 
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int a, b;

  Add add = new Add();
  Sub sub = new Sub();
  Mul mul = new Mul();
  Div div = new Div();

  System.out.println("두 정수 입력후 연산자 입력");
  System.out.println("ex=====");
  System.out.println("2 3");
  System.out.println("+");
  System.out.println("=======");
  a = sc.nextInt();
  b = sc.nextInt();
  char c;

  while (true) {
   c = sc.next().charAt(0);
   if (c == '+' || c == '-' || c == '*' || c == '/')
    break;
   System.out.println("잘못된 연산자!");
  }
  switch (c) {
  case '+': {
   add.setValue(a, b);
   System.out.println(add.calculate());
   break;

  }

  case '-': {
   sub.setValue(a, b);
   System.out.println(sub.calculate());
   break;
  }

  case '*': {
   mul.setValue(a, b);
   System.out.println(mul.calculate());
   break;
  }
  case '/': {

   div.setValue(a, b);
   System.out.println(div.calculate());
   break;
  }
  }

 }
}
class Add extends AbCal{
 int calculate() {
  return a + b;
 }
}

class Sub extends AbCal{
 public int calculate() {
  return a - b;
 }
}

class Mul extends AbCal {
 public int calculate() {
  return a * b;
 }
}

class Div extends AbCal{
 private int a, b, result;
 public int calculate() {
  try {
   result = a / b;
  } catch (ArithmeticException e) {
   System.out.println("0으로 나눌 수 없습니다.");
  }
  return result;
 }
}


 


 

 

AbCal.java


abstract class AbCal {
 int a, b;
 void setValue(int a, int b) {
  this.a = a;
  this.b = b;
 }
 abstract int calculate();
}