package ex_overloading;
public class Test1 {
public static void main(String[] args) {
Calculator c = new Calculator();
c.calc('+', 10, 20); // 10 + 20 = 30 출력
c.calc('-', 100, 10); // 100 - 10 = 90 출력
c.calc('*', 10, 20); // 10 * 20 = 200 출력
c.calc('/', 100, 2); // 100 / 2 = 50 출력
c.calc('+', 10, 20, 30); // 10 + 20 + 30 = 60 출력
c.calc('-', 100, 10, 20); // 100 - 10 - 20 = 70 출력
c.calc('*', 10, 20, 30); // 10 * 20 * 30 = 6000 출력
c.calc('/', 100, 2, 5); // 100 / 2 / 5 = 10 출력
c.calc('+', 10, 20, 30, 40); // 10 + 20 + 30 + 40 = 100 출력
c.calc('-', 100, 10, 20, 30); // 100 - 10 - 20 - 30 = 40 출력
c.calc('*', 10, 20, 30, 40); // 10 * 20 * 30 * 40 = 240000 출력
c.calc('/', 100, 2, 5, 2); // 100 / 2 / 5 / 2 = 5 출력
System.out.println("=====================================");
c.calc('+', 1, 2, 3, 4, 5, 6, 7, 8, 9);
}
}
/*
* 간단한 계산기(Calculator 클래스)
* - calc() 메서드
* => 연산자 1개와 정수형 가변인자를 활용하여 메서드 작성
*
*/
class Calculator {
public void calc(char opr, int...nums) {
int total = nums[0]; // 연산을 누적할 변수(첫번째 숫자를 미리 저장)
System.out.print(nums[0]);
// 이미 0번 인덱스 데이터는 total 변수에 전달했으므로
// if문으로 연산자 판별 후 1번 인덱스부터 마지막까지 반복해서 연산 수행
if (opr == '+') {
for (int i = 1; i < nums.length; i++) {
total += nums[i];
System.out.print(" + " + nums[i]);
}
} else if (opr == '-') {
for (int i = 1; i < nums.length; i++) {
total -= nums[i];
System.out.print(" - " + nums[i]);
}
} else if (opr == '*') {
for (int i = 1; i < nums.length; i++) {
total *= nums[i];
System.out.print(" * " + nums[i]);
}
} else if (opr == '/') {
for (int i = 1; i < nums.length; i++) {
total *= nums[i];
System.out.print(" / " + nums[i]);
}
}
System.out.println(" = " + total);
}
}