본문 바로가기
학습/IT

[IT] Java기초(7) - 함수(Function), 계산기 예제 코딩해보기

by 개성공장 2021. 12. 2.
반응형

함수 예제

 * 계산기 만들기

 - 더하기, 빼기, 곱하기, 나누기가 가능한 계산기를 만들기

   => 각각의 기능을 함수로 선언해서 구성합니다.

 - 작성순서 : 상자 구성, 상자 채우기, 로직 구성

 

---

package function;

public class SimpleCalculator {

// 더하기
static double plus(double d1, double d2) {
	return d1 + d2;
}

// 빼기
static void minus(double d1, double d2) {
	return d1 - d2;
}

// 곱하기
static void multi(double d1, double d2) {
	return d1 * d2;
}

// 나누기
static void div(double d1, double d2) {
	return d1 / d2;
}

---

package function;

public class MyCalculator {

public static void main(String[] args) {

	// +, -, *, /
	Scanner scanner = new Scanner(System.in);
	System.out.println("어떤 계산을 하실건가요?");
	String oper = scanner.nextLine();

	// 숫자 1, 키보드 입력
	double input1 = scanner.nextDouble();

	// 숫자 2, 키보드 입력
	double input2 = scanner.nextDouble();

	// 호출
	double result = 0;

	switch(oper) {
		case "+" :
			result = SimpleCalculator.plus(input1, input2);
		break;

		case "-" :
			result = SimpleCalculator.minus(input1, input2);
		break;

		case "*" :
			result = SimpleCalculator.multi(input1, input2);
		break;

		case "/" :
			result = SimpleCalculator.div(input1, input2);
		break;

		default:
			System.out.println("연산자를 올바르게 선택하세요..");
	}

	// 결과 출력
	System.out.println(result);
}
}

---

 

=> 코드를 만들고 나니 switch 부분이 너무 길어서 복잡해보입니다. 이 부분을 다시 함수 정의한 후 넣으면 코드가 더 간결해질 수 있겠죠.

 

위 코드 예시와 같이 단위 기능의 함수들을 먼저 정의해서 만든 후에 그것들을 합치는 함수를 다시 만드는 식으로 구성하는 것이 중요합니다.

 

 

 

 

---

package function;

public class SimpleCalculator {

// 계산기 기능(이전 코드에서 함수로 변경)
static double calc(String oper, double input1, double input2) {

	double result = 0;

	switch(oper) {
		case "+" :
			result = SimpleCalculator.plus(input1, input2);
		break;
		case "-" :
			result = SimpleCalculator.minus(input1, input2);
		break;
		case "*" :
			result = SimpleCalculator.multi(input1, input2);
		break;
		case "/" :
			result = SimpleCalculator.div(input1, input2);
		break;
		default:
			System.out.println("연산자를 올바르게 선택하세요..");
	}
	return result;
}

static double plus(double d1, double d2) {
	return d1 + d2;
}
static void minus(double d1, double d2) {
	return d1 - d2;
}
static void multi(double d1, double d2) {
	return d1 * d2;
}
static void div(double d1, double d2) {
	return d1 / d2;
}

---

package function;

public class MyCalculator {

public static void main(String[] args) {

	// +, -, *, /
	Scanner scanner = new Scanner(System.in);
	System.out.println("어떤 계산을 하실건가요?");
	String oper = scanner.nextLine();

	// 숫자 1, 키보드 입력
	double input1 = scanner.nextDouble();

	// 숫자 2, 키보드 입력
	double input2 = scanner.nextDouble();

	// 호출
	SimpleCalculator.calc(oper, input1, input2);

	// 결과 출력
	System.out.println(result);
}
}

 

 

 알아두면 좋은 함수

 * Java API의 함수들

 - Math 클래스 (docs.oracle.com/javase 참고)

 - Integer.parselnt() : 문자열을 int로 바꾸는 함수

 - Double.parseDouble() : 문자열을 double로 바꾸는 함수

 - String.valueOf() : 주어진 데이터를 문자열로 바꾸는 함수

 

 - 함수는 클래스에 포장되어 있으므로, '클래스의 이름.함수이름' 순으로 정합니다.

 - 대소문자에 특히 유의할 것!

 - 함수들에 static이 붙어있음에 유의해야 합니다.

 

 * 반드시 기억해야할 규칙

 - 함수는 데이터를 유지하지는 않습니다. 데이터를 처리해서 결과를 만들 때에만 사용합니다.

 - 만약 결과를 저장해야 하는 경우에 객체라는 개념을 사용합니다.

반응형

댓글