메서드(2) : 실습

부트캠프(END)/Java|2022. 5. 17. 17:42

메서드는 클래스에 종속되어 클래스 안에서만 사용된다. 완전 객체지향  자바, C#

함수는 독립적으로 사용이 가능하다. ⇢ C언어, 코틀린, 파이썬 등

 

각 기능을 잘게 쪼개서 구현하고 끌어와서 사용하면 전체적인 코드를 간결하게 만들 수 있고 수정도 용이하다!

 

지역변수

말 그대로 특정 '지역'에서만 사용이 가능한 변수로,

블록({})이 끝나면 자동으로 사라진다.(=메모리에서 삭제)

 

메서드 만들기 실습

1. 임의의 정수가 저장된 배열을 정렬하는 문제

package methods;

import java.util.Arrays;

public class MethodEx3 {
    // 정렬하는 메서드 
    // Call By Value,Call By Reference => 매개변수 전송법 
    static int[] sort(int[] arr, int type) {
        // select sort(선택 정렬)
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (type == 0) {
                    if (arr[i] > arr[j]) {
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                } else {
                    if (arr[i] < arr[j]) {
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }
        return arr;
    }
    static void process() {
        // 사용자가 5개 정수를 보내주면 => 메서드에서 정렬데이터를 전송 
        // 출력 
        int[] arr = new int[5];
        // 초기화 
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random() * 100) + 1; //1~100
        }
        System.out.println("정렬 전:");
        System.out.println(Arrays.toString(arr));
        System.out.println("정렬 후:");
        int[] res = sort(arr, 0); //0 올림차순
        System.out.println(Arrays.toString(res));
        res = sort(arr, 1); //1 내림차순 
        System.out.println(Arrays.toString(res));
        // ASC => DESC
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        process();
    }

}

2. 로그인 처리

package methods;
//로그인 처리를 한 번 구현해 보자.
import java.util.*;
public class MethodEx5 {
    static String isLogin(String id, String pwd) {
        final String MYID = "admin";
        final String MYPWD = "1234";
        String result = "";

        if (MYID.equalsIgnoreCase(id)) {
            //대소문 구분없이 아이디를 비교한다.
            if (MYPWD.equalsIgnoreCase(pwd))
                result = "로그인되었습니다.";
            else
                result = "비밀번호가 틀립니다.";
        } else {
            result = "아이디가 존재하지 않습니다.";
        }
        return result;
    }

    static void process() {
        Scanner scan = new Scanner(System.in);
        System.out.print("아이디 입력:");
        String id = scan.next();
        System.out.print("비밀번호 입력:");
        String pwd = scan.next();

        String res = isLogin(id, pwd);
        System.out.println(res);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        process();
    }

}

3. 아이디 중복 체크하기

package methods;

import java.util.Scanner;

public class No1 {

    static String input() {
        Scanner scan = new Scanner(System.in);
        System.out.print("ID입력:");
        String id = scan.next();
        return id;
    }

    static boolean idCheck(String id) {
        String[] IDs = {
            "KIMDOODOO",
            "kim",
            "kang",
            "lee",
            "park"
        };
        boolean bCheck = false;
        for (String i: IDs) {
            if (i.equalsIgnoreCase(id)) {
                bCheck = true;
                break;
            }
            /* 여기서 else문을 사용해 bCheck값을 변경할 경우,
             * 예를 들어 lee라는 아이디를 사용했다고 했을때- 원래는 false여야 하지만...
             * true, true, true, false, true로 마지막 결과가 true로 출력된다.
             * 따라서 if문에 break를 사용하고 else문은 사용하지 않는다.
             */
        }
        return bCheck;
    }

    static void process() {
        String id = input();
        boolean bCheck = idCheck(id);
        if (bCheck)
            System.out.println("중복입니다. 다른 아이디를 사용하세요.");
        else
            System.out.println(id + "는 사용가능합니다.");
    }

    public static void main(String[] args) {
        process();

    }

}

4. 윤년 확인하기

package methods;

import java.util.Scanner;

public class MethodEx6 {
    static boolean isYear(int year) {
        boolean bCheck = false;
        if ((year % 4 == 0 & year % 100 != 0) || (year % 400 == 0))
            bCheck = true;
        return bCheck;
    }
    static void process() {
        Scanner scan = new Scanner(System.in);
        System.out.print("년도 입력:");
        int year = scan.nextInt();
        boolean bCheck = isYear(year);
        if (bCheck == true)
            System.out.println(year + "년은 윤년입니다.");
        else
            System.out.println(year + "년은 윤년이 아닙니다.");
    }

    public static void main(String[] args) {
        process();
    }

}

5. 이진법 전환

package methods;

import java.util.Arrays;
import java.util.Scanner;

public class No4 {

    static int input() {
        Scanner scan = new Scanner(System.in);
        System.out.print("2진법으로 변환할 수 입력:");
        int x = scan.nextInt();
        return x;
    }

    static int inputAuto() {
        int x = (int)(Math.random() * 1000) + 1;
        return x;
    }

    static int[] binarify(int input) {
        int[] binary = new int[32];
        int index = binary.length - 1;
        while (true) {
            binary[index] = input % 2;
            input /= 2;
            if (input == 0)
                break;
            index--;
        }
        return binary;
    }

    static void print(int[] binary) {
        for (int i = 0; i < binary.length; i++) {
            if (i % 4 == 0)
                System.out.print(" ");
            System.out.print(binary[i]);
        }
        System.out.print(" (2)");
        System.out.println();
    }

    static void process(int type) {
        if (type == 0) {
            int b = input();
            int[] binary = binarify(b);
            System.out.println(b + "를 이진법으로 바꾸면");
            print(binary);
        } else if (type == 1) {
            int b = inputAuto();
            int[] binary = binarify(b);
            System.out.println(b + "를 이진법으로 바꾸면");
            print(binary);
        }
    }

    public static void main(String[] args) {
        process(1);
        process(0);
    }

}

'부트캠프(END) > Java' 카테고리의 다른 글

메서드(3) : 실습  (0) 2022.05.18
메서드(1) : 기본개념  (0) 2022.05.16
문자열(String) 다루기, String 배열 응용  (0) 2022.05.13

댓글()