foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[58. Method Overloading 문제]

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("잘못된 입력입니다.");
        }


    }
}


        

위의 소스처럼 오버로딩을 사용하여 똑같은 이름의 메소드를 이용해서 구현을 하여 사용시 메소드 이름을 하나만 알아도 사용을 할 수 있어서 사용시 장점이 있습니다.


결과 화면


Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나