반응형
□ 함수 예제
* 계산기 만들기
- 더하기, 빼기, 곱하기, 나누기가 가능한 계산기를 만들기
=> 각각의 기능을 함수로 선언해서 구성합니다.
- 작성순서 : 상자 구성, 상자 채우기, 로직 구성
---
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이 붙어있음에 유의해야 합니다.
* 반드시 기억해야할 규칙
- 함수는 데이터를 유지하지는 않습니다. 데이터를 처리해서 결과를 만들 때에만 사용합니다.
- 만약 결과를 저장해야 하는 경우에 객체라는 개념을 사용합니다.
반응형
'학습 > IT' 카테고리의 다른 글
[IT] Java기초(9) - 자바에서 배열(Array) 실습하기 (0) | 2021.12.22 |
---|---|
[IT] Java기초(8) - 자바에서의 배열(Array) 사용법 (0) | 2021.12.07 |
[IT] Java기초(6) - 함수(Function), 주사위 함수 정의하기 (0) | 2021.11.23 |
[IT] Java기초(5) - 연산자 제어문, 반복문 실습 (0) | 2021.11.19 |
[IT] Java기초(3) - 변수(variable), 데이터의 크기와 종류, 캐스팅 (0) | 2021.11.09 |
댓글