문제 설명
plus
minus
multiple
divide
각 메소드는 parameter를 int형 하나만 받습니다.
ex) a + 어떤 정수 숫자 =
randomNumber는 0~9사이의 정수
plus a + randomNumber
minus - randomNumber
multiple * randomNumber
divide / randomNumber // 0으로 나누면 Error가 납니다. 에러처리
랜덤한 숫자가 0으로 생성이 되면 “랜덤하게 생성된 숫자가 0입니다.” 가 출력되게
도전과제(업적)
randomNumber생성하는 로직은 interface를 이용해 di
코드 설명
NumberGenerator 인터페이스
public interface NumberGenerator {
int generate(int num); // 파라미터 인트로 하는 함수 선언
}
Java
복사
RandomNumberGenerator ( NumberGenerator 구현체 )
public class RandomNumberGenerator implements NumberGenerator{ //인터페이스 구현
@Override //오버라이딩를 통한 함수 구현
public int generate(int num) {
return (int) (Math.random() * num); // 0~ 10 까지 랜덤 수 반환
}
}
Java
복사
Calculator 클래스
package day2.calculator;
public class Calculator {
private int a; // 인트 a 필드 선언
NumberGenerator numberGenerator; // 객체 필드 선언
public Calculator(int a, NumberGenerator numberGenerator) { // 생성자 생성
this.a = a;
this.numberGenerator = numberGenerator;
}
public void plus() { // 더하기 함수
System.out.println(a + numberGenerator.generate(10)); // a + 객체를 통한 리턴 값
}
public void minus() { // 마이너스 함수
System.out.println(a - numberGenerator.generate(10)); // a - 객체를 통한 리턴 값
}
public void mul() { // 곱하기 함수
System.out.println(a * numberGenerator.generate(10)); // a * 객체를 통한 리턴 값
}
public void div() { // 나누기 함수
double result = (double) a / numberGenerator.generate(10); // a / 객체를 리턴 함수 값
if (check(result)) {
System.out.println("랜덤 값이 0입니다.");
} else {
System.out.println(result);
}
}
public static boolean check(double x) { // 인피니트 체크 함수
if (Double.isInfinite(x)) {
return true;
} else {
return false;
}
}
}
Java
복사
Calculator 메인 클래스
package day2.calculator;
public class Main {
public static void main(String[] args) {
NumberGenerator numberGenerator = new RandomNumberGenerator(); // RandomNumberGenerator 인스턴스 생성
Calculator randomCalculator = new Calculator(5,numberGenerator); // 매개변수 대입하여 Calculator 인스턴스 생성
randomCalculator.plus(); //객체를 통한 plus함수 호출
randomCalculator.minus(); //객체를 통한 munus함수 호출
randomCalculator.mul(); //객체를 통한 mul함수 호출
randomCalculator.div(); //객체를 통한 div함수 호출
}
}
Java
복사