[STUDY] 231208 | Java | 메서드(Method), return문, 예제 풀이

Nimgnos·2023년 12월 9일
0

👾 STUDY

목록 보기
16/40
post-thumbnail

💻 메서드(Method)

클래스 내에 구현된 함수(function). 특정한 기능을 하는 상자를 만드는 것. 코드의 중복을 제거하기 위해 {해당 문자들}을 묶은 것으로, 값을 입력받아 결과를 출력(반환)한다.

  • 하나의 메서드는 하나의 기능만 수행하도록 작성해야 함.
  • 메서드는 클래스 안, 다른 메서드 밖에서 생성
  • 메서드명은 소문자!
  • 메서드는 필요하면 여러 개 정의 가능함.
  • 매서드의 실행 흐름
    • ① 객체 생성
    • ② 메서드 호출(메서드의 매개변수에 인수가 각각 대입됨)
    • ③ 메서드의 모든 문장이 끝나거나 return을 만나면 반환
  • 메서드 호출 : 만들어진 메서드를 실행하는 것.
    • 메서드를 호출할 때는 메소드명과 매개변수 정보가 일치해야 함.
    • 매개 변수(parameter)는 메서드에 전달된 입력값을 저장하는 변수를 의미하고, 인수(arguments)는 메서드를 호출할 때 전달하는 입력값을 의미한다.
  • 메서드의 장점 : 중복 코드 제거 / 관리 용이 / 재사용 가능

💻 return문

실행 중인 메서드를 종료하고 호출한 곳으로 되돌아가도록 하는 메서드.

  • ex) 매개변수가 두 정수를 전달하면 두 정수의 합을 리턴
  • 메서드에서 리턴 키워드는 반드시 모든 내용이 끝난 후 작성한다. 리턴 다음에는 어떠한 코드도 실행될 수 없음.
  • 리턴은 하나의 결과값만 돌려줄 수 있음.
  • return type: 리턴되는 데이터의 자료형과 동일하게 작성
    • 반환타입이 void일 경우 생략 가능(컴파일러가 자동 추가됨)
    • 반환타입이 void가 아닐 경우, 반드시 return문 필요.
  • 반환값 : return되는 값으로, void typr이 아닐 때 return 옆에 쓰는 것. 반환 type과 반환값의 type이 일치해야 함.

📌 Method, return 예제 풀이

예제 1. 메서드 호출 및 정의

public class Method01 {
    public static void main(String[] args) {
        //메서드 호출
        hello();
    }
    //메서드 정의
    public static void hello(){
        System.out.println("hello~");
    }
}

예제 2.

public class Method02 {
    public static void tellMyName(){
        System.out.println("이름은 홍길동입니다.");
        tellMyAge();
    }
    public static void tellMyAge(){
        System.out.println("나이는 20살입니다.");
    }
    public static void main(String[] args) {
        System.out.println("프로그램 시작");
        tellMyName();
        System.out.println("프로그램 종료");
    }
}

예제 3. 매개변수

//메서드를 호출할 때는 메서드명과 매개변수 정보가 일치해야 함
public class Method03 {
    public static void main(String[] args) {
        tellMyName("java");
        tellMyName("임꺽정");
        tellMyAge(29);
    }
    public static void tellMyName(String name){ //매개변수, parameter
        System.out.println("이름은 " + name + "입니다.");
    }
    public static void tellMyAge(int age){
        System.out.println("나이는 " + age + "입니다.");
    }
}

예제 4. 매개변수로 두 정수를 받아 두 정수의 합을 출력

public class Method04 {
    public static void main(String[] args) {
        printSum(10, 20);
    }
    public static void printSum(int a, int b){
        System.out.println(a + b);
    }
}

예제 5. return

public class Method05 {
    public static void main(String[] args) {
        int a = getSum(10, 20);
        System.out.println(a);
        double aa = getValue(10,4);
        System.out.println(aa);
    }
    public static int getSum(int a, int b) {
        return a + b;
        //return 10; 실행안됨
        //System.out.println(111); 실행안됨
    //매개변수로 정수 두 개를 전달하면
    //두 정수의 나눗셈 결과를 리턴하는 메소드
    //결과는 반드시 실수로!
    public static double getValue(int a, int b){
        return a / (double)b; 
        //리턴되는 자료타입과 static 이후 단어가 같아야함
    }
}

예제 6.

  • 두 정수를 매개변수로 받아, 두 정수의 합을 리턴하는 메서드를 선언하고 호출하여 결과를 확인하세요.
    public static void main(String[] args) {
        int a = test1(10, 20);
        System.out.println(a);
    public static int test1(int a, int b) {
        return a + b;
    }

예제 7.

  • scanner로 입력받은 두 정수를 매개변수로 받아, 두 정수의 곱을 리턴하는 메서드를 선언하고 호출하여 결과를 확인해보세요.
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int e = test2(num1, num2);
        System.out.println(e);
    public static int test2(int num1, int num2) {
        return num1 * num2;
    }        

예제 7.

  • 두 정수를 매개변수로 받아, 두 정수 중 큰 숫자를 리턴하는 메서드를 선언하고 사용해보세요.
    public static void main(String[] args) {
//        int c = 10; //if문 사용
//        int d = 20;
//        int resert = test3(c, d);
//        System.out.println(resert);
        System.out.println(test3(20,10));
    public static int test3(int c, int d) {
        return c > d ? c : d; //삼항연산자
// if문 사용
//              if (c < d) {
//            return d;
//        }
//        else{
//            return c;
//        }
    }

예제 8.

  • 두 문자열을 매개변수로 받아, 두 문자열의 나열결과를 리턴하는 메서드를 선언하고 사용해보세요.
    public static void main(String[] args) {
        String str = test4("치킨", "버거");
        System.out.println(str);
    public static String test4(String str1, String str2){
        return str1 + str2;
    }

예제 9.

  • 임의의 정수를 매개변수로 받아, 만약 매개변수로 받은 정수가 90 이상이면 ‘A’, 70 이상이면 ‘B’, 그 외의 수가 들어오면 ‘C’를 리턴하는 메서드를 선언하고 사용해보세요.
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(test5(75));
    }
    public static String test5(int z){
        String resert;
        if(z >= 90){
            resert = "A";
        }
        else if (z >= 70) {
            resert = "B";
        }
        else {
            resert = "C";
        }
        return resert;
    }
}    

예제 10.

  • 매개변수로 정수를 입력받아, 입력받은 정수를 문자열로 리턴하는 메서드를 선언하고 사용해보세요.(정수 -> 문자열, 문자열 -> 정수)
    public static void main(String[] args) {
        System.out.println(test6(5));
    public static String test6(int num){
        //문자열 -> 정수
        int aa = Integer.parseInt("100"); //100
        //정수 -> 문자열
        String bbb = String.valueOf(100); //100
        return num + "";
    }        

예제 11.

  • 실수를 매개변수로 받아, 그 수의 제곱 값을 리턴하는 메서드를 만들고 사용해보세요.
    public static void main(String[] args) {
        System.out.println(test7(1.1));
    public static double test7(double num) {
        return num * num;
    }

예제 12.

  • 세 정수를 매개변수로 받아, 세 정수의 평균을 리턴하는 메서드를 선언하고 사용해보세요.
    public static void main(String[] args) {
        System.out.println(test8(1, 3, 4));
    public static double test8(int a, int b, int c){
        return(a+b+c)/3.0;
    }

예제 13.

  • 한 정수를 매개변수로 받아, 1부터 매개변수로 받은 수까지 중 홀수의 합을 리턴하는 메서드를 선언하고 사용해보세요.
    public static void main(String[] args) {
        System.out.println(test9(5));
    }
    public static int test9(int num){
        int sum = 0;
        for(int i = 1; i < num + 1; i++){
            if(i % 2 == 1){
                sum = sum + i;
            }
        }
        return sum;
   }

예제 14.

  • 입력받은 정수를 매수변수로 받아, 해당 정수를 출력하는 메서드를 선언하고 호출해보세요.
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        test11(num);
    }
    public static void test11(int a){
        System.out.println(a);
    }  

예제 15.

  • 10번 문제에서 매개변수로 받는 이름, 나이, 주소를 scanner를 통한 입력으로 바꾸어 풀어보세요.
    public static void main(String[] args) {
        String name = sc.next();
        int age = sc.nextInt();
        String addr = sc.next();
        test12(name, age, addr);        
    }
public static void test12(String name, int age, String addr){
        System.out.println("이름은 " + name + "입니다.");
        System.out.println("나이는 " + age + "입니다.");
        System.out.println("주소는 " + addr + "입니다.");
    }        

예제 16.

  • scanner로 정수 두 개를 입력받아, 입력받은 두 수를 매개변수로 사용하여 두 수의 합을 출력하는 메서드를 선언하고, 호출해보세요.
    public static void main(String[] args) {
        int a = sc.nextInt();
        int b = sc.nextInt();
        test13(a, b);
    }
    public static void test13(int a, int b){
        System.out.println(a + b);
    }

예제 17.

  • 한 정수를 매개변수로 받아, 그 정수가 짝수이면 ‘짝수입니다’, 홀수이면 ‘홀수입니다’를 출력하는 메서드를 선언하고 호출해보세요.
    public static void main(String[] args) {
        int c = sc.nextInt();
        test14(c);
    }
    public static void test14(int c){
        if(c % 2 == 0){
            System.out.println("짝수입니다.");
        }
        else {
            System.out.println("홀수입니다.");
        }
        //삼항연산자로 풀이
        //System.out.println(c % 2 == 0 ? "짝수" : "홀수");
    }

예제 18.

  • 한 정수를 매개변수로 받아, 0부터 입력받은 숫자까지 출력하는 메서드를 선언하고 호출해보세요.
    public static void main(String[] args) {
        int d = sc.nextInt();
        test16(d);
    public static void test16(int d){
        int i = 0;
        while (i <= d){
            System.out.println(i);
            i++;
        }
        //for문으로 풀기
        //for(int i = 0; i < d + 1; i++){
            //System.out.println(i);
        //}
    }

예제 19.

  • 두 정수를 매개변수로 받아, 두 정수 사이의 모든 숫자를 출력하는 메서드를 선언하고 호출해보세요.
    public static void main(String[] args) {
        int e = sc.nextInt();
        int f = sc.nextInt();
    }
    public static void test17(int e, int f){
        for(int i = e + 1; i < f; i++){
            System.out.println(i);
        }
    }

예제 20.

  • 두 정수를 매개변수로 받아, 두 정수가 모두 짝수이면 ‘두 수는 짝수입니다.’를 출력하고, 한 정수만 짝수일 경우 ‘한 수만 짝수입니다.’를, 두 수 모두 홀수일 때는 ‘두 수는 홀수입니다.’를 출력하는 메서드를 선언하고 호출해보세요.
    public static void test15(int z, int x){
        if(z % 2 == 0 && z % 2 == 0){
            System.out.println("둘 다 짝수");
        } 
        else if(z % 2 == 1 && x % 2 == 1) {
            System.out.println("둘 다 홀수");
        }
        else{
            System.out.println("하나만 홀수");
        }
    }

예제 21.

  • 두 정수를 매개변수로 받아, 두 정수 사이의 5의 배수의 개수를 출력하는 메서드를 선언하고 호출해보세요.
    public static void test18(int num1, int num2){
        int cnt = 0;
        for(int i = num1 + 1; i < num2; i++){
            if(i % 5 == 0){
                cnt++;
            }
        }
        System.out.println(cnt);
    }

예제 22.

  • 한 문자열과 정수를 매개변수로 받아, 매개변수로 받은 문자열을 매개변수로 받은 숫자만큼 반복 출력하는 메서드를 선언하고 호출해보세요.
    public static void test19(String str, int num){
        for(int i = 0; i < num; i++){
            System.out.print(str);
        }
    }

🔥심화 예제 1.

  • 정수형 배열을 매개변수로 받아 배열의 모든 요소 중 최대값을 리턴하는 메서드를 만들고 호출해보세요.
    public static void main(String[] args) {
        int[] a = {1, 10, 7, 5, 8};
        System.out.println(test6(a));
    } 
    public static int test6(int[] arr){
        int max = arr[0];
        for(int i =1; i < arr.length; i++){
            if(max < arr[i]){
                max = arr[i];
            }
        }
        return max;
    }

🔥심화 예제 2.

  • 정수형 배열 하나를 매개변수로 받아 배열의 요소 중 홀수를 제거한 새로운 배열을 리턴하는 메서드를 만들어보세요.
    public static void main(String[] args) {
        int[] a = {1, 10, 7, 5, 8};
        int[] result = test9(a);
        for(int e : result){
            System.out.println(e);
        }
    public static int[] test9(int[] arr){
        //짝수의 수 파악
        int cnt = 0;
        for(int i = 0; i < arr.length; i++){
            if(arr[i] % 2 == 0){
                cnt++;
            }
        }
        //결과를 담을 배열을 생성
        int[] resultArr = new int[cnt];
        //짝수만 담을 배열을 생성
        int index = 0;
        for(int i =0; i < arr.length; i++){
            if(arr[i] % 2 == 0){
                resultArr[index] = arr[i];
                index++;
                //같은 계산방법
//                resultArr[index++] = arr[i];
            }
        }
        return resultArr;
    }
}

🍀 회고

  • 자바에서 중요한 개념인 메서드를 배웠다. 이전에 기초 인강을 보면서도 강조됐었던 '중복 코드를 제거' 할 수 있는 아주 강력한 기능이었다. 코딩을 하면서 '지금은 이렇게 코드가 짧지만, 실무에서는 이 코드들을 어떻게 다 세팅하고 찾고 수정할 수 있을까?' 하는 의문이 있었는데, 메서드 기능을 통해 보다 효율적인 코드의 작성이 가능하며, 코드의 관리, 유지보수 등이 용이할 수 있다는 것을 이해했다.
  • 그만큼 중요한 개념이라 예제를 20문제도 넘게 풀었는데.... 메서드 문제를 풀면서 조건문과 반복문을 언제 사용할지, 문법도 자꾸 헷갈려서 풀다가 멈추는 일이 잦았다. 개념 하나가 다 이해가 되기도 전에 이전 개념들을 합친 응용 문제를 풀다 보니, 개념 자체가더 혼란스러워지는 느낌이다. 함께 수강중인 학우들보다 뒤쳐지는 느낌이 들어 조급한 기분이 들었으나, 아쉬운 부분은 스스로 채우는 수밖에 없다. 다음주 수업이 시작되기 전에 복습하고 기본서도 제대로 읽어보는 수밖에.
profile
먹고 기도하고 코딩하라

0개의 댓글