자바 계산기 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;
this.a = a;
this.b = b;
}
abstract int calculate();
}
'개인 공부방 > JAVA' 카테고리의 다른 글
자바의 정석 edition2 _ 소스파일 (0) | 2012.10.16 |
---|---|
자바의 정석_연습문제 답안 (0) | 2012.10.16 |
자바 계산기 v1 (0) | 2012.10.15 |
자바 -DB 연동 파일입출력 (0) | 2011.12.01 |
자바-오라클 연동 3. 데이터 삭제하기 - statement, prepareStatement 이용 (0) | 2011.11.30 |