Method 오버로딩 문제
이제 공부를 계속 했던 오버로딩에 대해서 직접 사용하고 고민을 해봐야 한다고 생각을 합니다. 이론적인 내용만 보고 완벽이 이해하고 할 수 있다는 것은 어렵기 때문에 오버로딩을 사용을 할 수 있는 것이 더 깊어질 수 있도록 이번 걸음에서 하겠습니다.
이번 걸음에서는 배웠던 오버로딩 중에 Method 오버로딩 문제를 풀어보도록 하겠습니다. 문제를 푸는 경우에는 문제를 보고 먼저 풀어보고 추후에 정답 소스를 확인을 하시면 공부에 좀 더 도움이 될 수 있습니다.
Method 오버로딩 문제는 바로 정수와 실수 사칙 연산을 하는 프로그램을 구현을 하는 것입니다. 여러가지 방법이 있겠지만 우리가 배운 Method 오버로딩을 사용을 해서 구현을 해야 합니다. 문제를 풀 때는 배운 것을 꼭 활용해서 구현을 하는 것을 추천드립니다.
Method 오버로딩을 이용한 정수 실수 사칙 연산 문제
문제에 대한 내용은 위의 사진에 자세히 설명을 했습니다. 올바른 결과 출력과 잘못 입력을 한 경우도 출력이 되도록 구현을 해주세요. 반복문을 사용해서 계속적인 연산 프로그램을 구현을 하는 것은 아니지만 반복문을 사용한다면 더욱 좋을 수 있습니다.
※ Method 오버로딩을 꼭 사용을 해야 합니다.
Main문에 소스를 구현해 주세요. 또한 static으로 Method를 생성을 하시면 됩니다.
실행 관련 걸음 : 다섯 걸음, 여섯걸음
public class MethodTest {
static void add(int a, int b){
System.out.println("결과 : "+(a+b));
}
static void add(double a, double b){
System.out.println("결과 : "+(a+b));
}
static void minus(int a, int b){
System.out.println("결과 : "+(a-b));
}
static void minus(double a, double b){
System.out.println("결과 : "+(a-b));
}
static void mul(int a, int b){
System.out.println("결과 : "+(a*b));
}
static void mul(double a, double b){
System.out.println("결과 : "+(a*b));
}
static void div(int a, int b){
System.out.println("결과 : "+(a/b));
}
static void div(double a, double b){
System.out.println("결과 : "+(a/b));
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("1. 정수 2. 실수 : ");
int select = scanner.nextInt();
if(select == 1 || select == 2){
int num1 =0;
int num2 = 0;
double fnum1= 0.0;
double fnum2 = 0.0;
if(select == 1){
System.out.print("숫자 1 : ");
num1 = scanner.nextInt();
System.out.print("숫자 2 : ");
num2 = scanner.nextInt();
}
if(select == 2){
System.out.print("숫자 1 : ");
fnum1 = scanner.nextDouble();
System.out.print("숫자 2 : ");
fnum2 = scanner.nextDouble();
}
System.out.print("연산자를 입력 해주세요 : ");
String str = scanner.next();
if(str.equals("+")){
if(select == 1){
add(num1,num2);
}
else{
add(fnum1,fnum2);
}
}
else if(str.equals("-")){
if(select == 1){
minus(num1,num2);
}
else{
minus(fnum1,fnum2);
}
}
else if(str.equals("*")){
if(select == 1){
mul(num1,num2);
}
else{
mul(fnum1,fnum2);
}
}
else if(str.equals("/")){
if(select == 1){
div(num1,num2);
}
else{
div(fnum1,fnum2);
}
}
else{
System.out.println("잘못된 입력입니다.");
}
}
else{
System.out.println("잘못된 입력입니다.");
}
}
}
위의 소스처럼 오버로딩을 사용하여 똑같은 이름의 메소드를 이용해서 구현을 하여 사용시 메소드 이름을 하나만 알아도 사용을 할 수 있어서 사용시 장점이 있습니다.
결과 화면
함께 보면 좋은 글
§ Java 마흔 세걸음 class(클래스)란?§ Java 마흔 네걸음 class(클래스) 예제
§ Java 마흔 다섯걸음 class(클래스) 문제 1
§ Java 마흔 여섯걸음 class 내부 용어 정리
§ Java 마흔 일곱걸음 null
§ Java 마흔 여덟걸음 생성자란?
§ Java 마흔 아홉걸음 has 란?
§ Java 오십 걸음 has 문제
§ Java 오십 한걸음 객체 심화
§ Java 오십 두걸음 class 배열
§ Java 오십 세걸음 class 배열 심화
§ Java 오십 네걸음 class 배열 문제
§ Java 오십 다섯걸음 오버로딩 기초
§ Java 오십 여섯걸음 Method 오버로딩
§ Java 오십 일곱걸음 생성자 오버로딩