본문 바로가기

개인 공부방/JAVA

자바 계산기 v1

더하기, 빼기, 곱하기, 나누기를 수행하는 각 클래스 Add, Sub, Mul, Div를 만들어라. 이들은 모두 다음 필드와 메소드를 가진다.
•int 타입의 a,b 필드 : 연산하고자 하는 피연산자
•void setValue(int a, int b) : 피연산자를 객체 내에 설정한다.
•int calculate() : 해당 클래스의 목적에 맞는 연산을 실행하고 그 결과를 리턴한다.
•main() 메소드에서는 키보드로부터 두 정수와 계산하고자 하는 연산자를 입력받은 후 Add, Sub, Mul, Div 중에서 이 연산을 실행하는 객체를 생성하고 setValue()와 calculate()를 호출하여 결과 값을 출력한다.

 

 


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 {
 private int a, b;

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

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

class Sub {
 private int a, b;

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

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

class Mul {
 private int a, b;

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

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

class Div {
 private int a, b, result;

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