본문 바로가기
TIL/JAVA

23.05.03

by J1-H00N 2023. 5. 3.

2차원 배열, 다차원 배열, 순회

package nadocoding.Chap_04;

public class _11_Continue {
    public static void main(String[] args) {
        // Continue

        // 치킨 주문 손님중에 노쇼 손님이 있다고 가정
        // For
        int max = 20;
        int sold = 0;
        int noShow = 17;
        for (int i = 1; i <= 50; i++) {
            System.out.println(i + "번 손님, 주문하신 치킨 나왔습니다.");

            // 치킨을 가져가는 상황
            // 손님이 없다면??
            if (i == noShow) {
                System.out.println(i + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
                continue; // 아래 명령은 모두 건너뜀
            }

            sold++;
            if (sold == max) {
                System.out.println("금일 재료가 모두 소진되었습니다.");
                break;
            }
        }
        System.out.println("영업을 종료합니다.");

        System.out.println("----------------");

        // while 문
        sold = 0;
        int index = 0;
        // while (index <= 50) {
        while (true) {
            index += 1;
            System.out.println(index + "번 손님, 주문하신 치킨 나왔습니다.");

            // noshow
            if (index == noShow) {
                System.out.println(index + "번 손님, 노쇼로 인해 다음 손님에게 기회가 넘어갑니다.");
                continue; // 아래 명령은 모두 건너뜀
            }
            sold++;
            if (sold == max) {
                System.out.println("금일 재료가 모두 소진되었습니다.");
                break;
            }
        }
        System.out.println("영업을 종료합니다.");
    }
}

 

package nadocoding.Chap_04;

public class _Quiz_04 {
    public static void main(String[] args) {
        /*
        조건문을 활용하여 주차 요금 정산 프로그램 만들기

        1. 주차요금은 시간당 4000원 (일일 최대 요금은 30000원)
        2. 경차 또는 장애인 차량은 최종 요금에서 50% 할인

        ex)
        일반 차량 5시간 주차 시 20000원
        경차 5시간 주차 시 10000원
        장애인 차량 10시간 주차 시 15000원

        출력 결과 : 주차 요금은 xx원 입니다.
         */

        int parkingHour = 10;
        int fee = parkingHour * 4000;
        if (fee > 30000) {
            fee = 30000;
        }
        boolean smallCar = false;
        boolean withDisabledPerson = true;

        if (smallCar || withDisabledPerson) {
            fee /= 2;
        }

        System.out.println("주차 요금은 " + fee + "원 입니다.");
    }
}

 

package nadocoding.Chap_05;

public class _01_Array {
    public static void main(String[] args) {
        // 배열 : 같은 자료형의 값 여러개를 저장하는 연속된 공간
        // String 사용 시
        String coffeeRoss = "아메리카노";
        String coffeeRachel = "카페모카";
        String coffeeChandler = "라떼";
        String coffeeMonica = "카푸치노";

        System.out.println(coffeeRoss + " 하나");
        System.out.println(coffeeRachel + " 하나");
        System.out.println(coffeeChandler + " 하나");
        System.out.println(coffeeMonica + " 하나");
        System.out.println("주세요");

        // 배열 선언 첫 번째 방법
        // String[] coffees = new String[4]; // 크기가 4인 coffees라는 배열 선언

        // 배열 선언 두 번째 방법
        // String coffees[] = new String[4]; // 배열 이름 뒤에 [] 붙여서도 선언 가능
//        coffees[0] = "아메리카노"; // 배열 첫 번째에 값 저장
//        coffees[1] = "카페모카";
//        coffees[2] = "라떼";
//        coffees[3] = "카푸치노";

        // 배열 선언 세 번째 방법
        // String[] coffees = new String[] {"아메리카노", "카페모카", "라떼", "카푸치노"};

        // 배열 선언 네 번째 방법
        String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};

        System.out.println("--------------");

        System.out.println(coffees[0] + " 하나");
        System.out.println(coffees[1] + " 하나");
        coffees[2] = "에스프레소"; // 배열 값 변경
        System.out.println(coffees[2] + " 하나");
        System.out.println(coffees[3] + " 하나");
        System.out.println("주세요");

        // 다른 자료형?
        int[] i = new int[3];
        i[0] = 1;
        i[1] = 2;
        i[2] = 3;
        double[] d = new double[] {10.0, 11.2, 13.5};
        boolean[] b = {true, false, true};
    }
}

 

package nadocoding.Chap_05;

public class _02_ArrayLoop {
    public static void main(String[] args) {
        // 배열의 순회
        String[] coffees = {"아메리카노", "카페모카", "라떼", "카푸치노"};
//        System.out.println(coffees[0] + " 하나");
//        System.out.println(coffees[1] + " 하나");
//        ...

        // for 반복문 순회
        for (int i = 0; i < 4; i++) {
            System.out.println(coffees[i] + " 하나");
        }
        System.out.println("주세요");

        System.out.println("--------------");

        // 배열의 길이를 이용한 순회
        for (int i = 0; i < coffees.length; i++) {
            System.out.println(coffees[i] + " 하나");
        }
        System.out.println("주세요");

        System.out.println("--------------");

        // enhanced for (for-each) 반복문
        // foreach른 통해 기본 틀 만들 수 있음
//        for (:
//             ) {
//
//        }
        for (String coffee : coffees) {  // coffees라는 배열의 값들을 순서대로 coffee 라는 문자열에 저장
            System.out.println(coffee + " 하나");
        }
        System.out.println("주세요");
    }
}

 

package nadocoding.Chap_05;

public class _03_MultiArray {
    public static void main(String[] args) {
        // 다차원 배열

        // 소규모 영화관 좌석
        // A1 - A5
        // B1 - B5
        // C1 - C5

        String[] seatA = {"A1", "A2", "A3", "A4", "A5"};
        String[] seatB = {"B1", "B2", "B3", "B4", "B5"};
        String[] seatC = {"C1", "C2", "C3", "C4", "C5"};

        // 3 x 5 크기의 2차원 배열
        String[][] seats = new String[][] {
                {"A1", "A2", "A3", "A4", "A5"},
                {"B1", "B2", "B3", "B4", "B5"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        // B2에 접근하려면?
        System.out.println(seats[1][1]); // B2

        // C5에 접근하려면? // [세로][가로]
        System.out.println(seats[2][4]); // C5

        // 첫 줄에는 3칸, 둘째 줄에는 4칸, 셋째 줄에는 5칸
        String[][] seats2 = {
                {"A1", "A2", "A3"},
                {"B1", "B2", "B3", "B4"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        // A3에 접근하려면?
        System.out.println(seats2[0][2]);

        // A5에 접근하려면?
        // System.out.println(seats2[0][4]); // ArrayIndexOutOfBoundsException 오류

        // 3차원 배열 만들기
        String[][][] marray = new String[][][] {
                { {}, {}, {} },
                { {}, {}, {} },
                { {}, {}, {} }
        };
        String[][][] array3 = new String[3][3][3];
    }
}

 

package nadocoding.Chap_05;

public class _04_MultiArrayLoop {
    public static void main(String[] args) {
        // 다차원 배열 순회
        String[][] seats = new String[][] {
                {"A1", "A2", "A3", "A4", "A5"},
                {"B1", "B2", "B3", "B4", "B5"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        for (int i = 0; i < 3; i++) { // 세로
            for (int j = 0; j < 5; j++) { // 가로
                System.out.print(seats[i][j] + " ");
            }
            System.out.println();
        }

        System.out.println("-----------------");

        String[][] seats2 = {
                {"A1", "A2", "A3"},
                {"B1", "B2", "B3", "B4"},
                {"C1", "C2", "C3", "C4", "C5"}
        };

        for (int i = 0; i < seats2.length; i++) { // 세로
            for (int j = 0; j < seats2[i].length; j++) { // 가로
                System.out.print(seats2[i][j] + " ");
            }
            System.out.println();
        }

        System.out.println("-----------------");

        String[][] seats3 = new String[10][15];
        String[] eng = {"A", "B", "C", "D", "E", "F","G", "H", "I", "J"};
        for (int i = 0; i < seats3.length; i++) {
            for (int j = 0; j < seats3[i].length; j++) {
                seats3[i][j] = eng[i] + (j + 1);
            }
        }

        // 표 구매
        seats3[7][8] = "__";
        seats3[7][9] = "___";

        // 영화관 좌석 번호 확인
        for (int i = 0; i < seats3.length; i++) { // 세로
            for (int j = 0; j < seats3[i].length; j++) { // 가로
                System.out.print(seats3[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 

package nadocoding.Chap_05;

public class _05_ASCII {
    public static void main(String[] args) {
        // 아스키 코드 (ANSI) : 미국 표준 코드
        char c = 'A'; // 알파벳 대문자(A)는 65부터 시작, 소문자(a)는 97부터 시작, 숫자(0)는 48부터 시작
        System.out.println(c); // A
        System.out.println((int)c); // 65

        c = 'B';
        System.out.println(c); // B
        System.out.println((int)c); // 66

        c++;
        System.out.println(c); // C
        System.out.println((int)c); // 67

        String[][] seats3 = new String[10][15];
        char ch = 'A';
        for (int i = 0; i < seats3.length; i++) {
            for (int j = 0; j < seats3[i].length; j++) {
                seats3[i][j] = String.valueOf(ch) + (j + 1);
                System.out.print(seats3[i][j] + " ");
            }
            ch++;
            System.out.println();
        }
//
//        for (int i = 0; i < seats3.length; i++) { // 세로
//            for (int j = 0; j < seats3[i].length; j++) { // 가로
//                System.out.print(seats3[i][j] + " ");
//            }
//            System.out.println();
//        }
    }
}

 

package nadocoding.Chap_05;

public class _Quiz_05 {
    public static void main(String[] args) {
        /*
         배열을 활용하여 쇼핑몰에서 구매 가능한 신발 사이즈 옵션을 출력하는 프로그램을 작성하시오

         1. 신발 사이즈는 250부터 295까지 5 단위로 증가
         2. 신발 사이즈 수는 총 10가지

         ex)
         사이즈 250 (재고 있음)
         사이즈 255 (재고 있음)
         ...
         */

        int[] sizeArray = new int[10];
        for (int i = 0; i < sizeArray.length; i++) {
            sizeArray[i] = 250 + i * 5;
        }

        for (int size:
             sizeArray) {
            System.out.println("사이즈 " + size + " (재고 있음)");
        }
    }
}

 

package nadocoding.Chap_06;

public class _01_Method {
    // 메소드 정의
    public static void sayHello() {
        System.out.println("안녕하세요 메소드입니다.");
    }



    public static void main(String[] args) {
        // 메소드 호출
        System.out.println("메소드 호출 전");
        sayHello();
        sayHello();
        sayHello();
        System.out.println("메소드 호출 후");
    }
}

 

package nadocoding.Chap_06;

public class _02_Parameter {
    // 전달값이 있는 메소드
    public static void power(int a) {  // a = Parameter, 매개변수
        int result = a * a;
        System.out.println(a + " 의 2 승은 " + result);
    }

    public static void powerByExp(int number, int exponent) {
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number;
        }
        System.out.println(number + " 의 " + exponent + " 승은 " + result);
    }

    public static void main(String[] args) {
        // 전달값, parameter
        // 2 -> 2 * 2 = 4
        // 3 -> 3 * 3 = 9

        // 2 = Argument, 인수
        power(2); // 2 의 2 승은 4
        power(3); // 3 의 2 승은 9

        powerByExp(3,3); // 3 의 3 승은 27
        powerByExp(2,5); // 2 의 5 승은 32
        powerByExp(10,0); // 10 의 0 승은 1
    }
}

 

package nadocoding.Chap_06;

public class _03_Return {
    // 호텔 전화번호
    public static String getPhoneNumber() {
        String phoneNumber = "02-1234-5678";
        return phoneNumber;
    }
    // 호텔 주소
    public static String getAddress() {
        String address = "서울시 어딘가";
        return address;
    }
    // 호텔 액티비티
    public static String getActivity() {
        return "볼링장, 탁구장, 노래방";
    }
    public static void main(String[] args) {
        // 반환값
        String contactNumber = getPhoneNumber();
        System.out.println("호텔 전화번호 : " + contactNumber);

        String address = getAddress();
        System.out.println("호텔 주소 : " + address);

        System.out.println("호텔 액티비티 : " + getActivity());
    }
}

 

package nadocoding.Chap_06;

public class _04_ParameterAndReturn {
    public static int getPower(int number) {
        int result = number * number;
        return result;
        // return number * number;
    }

    public static int getPowerByExp(int number, int exponent) {
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number;
        }
        return result;
    }

    public static void main(String[] args) {
        // 전달값과 반환값이 있는 메소드
        int retVal = getPower(2);
        System.out.println(retVal); // 4

        retVal = getPower(3);
        System.out.println(retVal); // 9

        retVal = getPowerByExp(3,3);
        System.out.println(retVal); // 27

        System.out.println(getPowerByExp(2,4)); // 16

        System.out.println(getPowerByExp(5,0)); // 1
    }
}

 

package nadocoding.Chap_06;

public class _05_Overloading {
    public static int getPower(int number) {
        int result = number * number;
        return result;
        // return number * number;
    }

    public static int getPower(String strNumber) {
        int number = Integer.parseInt(strNumber);
        return number * number;
    }

    public static int getPower(int number, int exponent) {
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number;
        }
        return result;
    }

    public static void main(String[] args) {
        // 메소드 오버로딩
        // 같은 이름의 메소드를 여러 번 선언하는 것
        // 1. 전달값의 타입이 다르거나
        // 2. 전달값의 개수가 다르거나
        // 반환값이 다른 경우는 X
        System.out.println(getPower(3)); // 9
        System.out.println(getPower("4")); // 16
        System.out.println(getPower(3,3)); // 27
    }
}

 

package nadocoding.Chap_06;

public class _06_WhenToUse {
    public static int getPower(int number) {
        // int result = number * number;
        // return result;
        // return number * number;
        return getPower(number,2);
    }

    public static int getPower(int number, int exponent) {
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number;
        }
        return result;
    }

    public static void main(String[] args) {
        // 메소드가 필요한 이유

        // 2의 2승을 구하기
//        int result = 1;
//        for (int i = 0; i < 2; i++) {
//            result *= 2;
//        }
//        System.out.println(result); // 4
        System.out.println(getPower(2,2));

        // 3의 3승을 구하기
//        result = 1;
//        for (int i = 0; i < 3; i++) {
//            result *= 3;
//        }
//        System.out.println(result); // 27
        System.out.println(getPower(3,3));

        // 4의 2승을 구하기
//        result = 1;
//        for (int i = 0; i < 2; i++) {
//            result *= 4;
//        }
//        System.out.println(result); // 16
        System.out.println(getPower(4,2));
    }
}

 

package nadocoding.Chap_06;

public class _07_VariableScope {
    public static void methodA() {
        // System.out.println(number);
        // System.out.println(result);
    }

    public static void methodB() {
        int result = 1; // 지역 변수
    }

    public static void main(String[] args) {
        int number = 3; // 지역 변수

        // System.out.println(result);

        for (int i = 0; i < 5; i++) { // i도 지역변수
            System.out.println(i);
        }

        // System.out.println(i);

        {
            int j = 0; // 지역변수
            System.out.println(j);
            System.out.println(number); // number와 같은 메소드에 있기에 사용 가능
        }
        // System.out.println(j);
    }
}

 

package nadocoding.Chap_06;

public class _08_MainMethod {
    // run -> edit Configuration -> Name => Test -> build and run => nadocoding.Chap_06._08_MainMethod
    public static void main(String[] args) { // 메인 메소드
        for (String s : args) {
            System.out.println(s);
        }

        // 1. 도서 조회
        // 2. 도서 대출
        // 3. 도서 반납
        if (args.length == 1) {
            switch (args[0]) {
                case "1" :
                    System.out.println("도서 조회 메뉴입니다.");
                    break;
                case "2" :
                    System.out.println("도서 대출 메뉴입니다.");
                    break;
                case "3" :
                    System.out.println("도서 반납 메뉴입니다.");
                    break;
                default:
                    System.out.println("잘못 입력하였습니다.");
            }
        } else {
            System.out.println("사용법) 1~3 중 하나를 입력해주세요");
        }
    }
}

 

package nadocoding.Chap_06;
/*
개인 정보 중 일부를 비공개로 전환하는 프로그램을 작성하시오

1. 개인정보를 비공개로 전환하는 메소드 작성
2. 하나의 메소드에서 모든 동작 처리
3. 각 정보는 아래 위치부터 비공개 적용
이름 : 두번째 글자부터
주민 등록 번호 : 뒷자리 두번째 자리부터
전화번호 : 마지막 네자리

ex)
나코딩
990130-1234567
010-1234-5678

나**
990130-1******
010-1234-****

 */

public class _Quiz_06 {
    public static String getHiddenData(String data, int index) {
        String blur = data.substring(0, index);
        for (int i = index; i < data.length(); i++) {
            blur += "*";
        }
        return blur;
    }

    public static void main(String[] args) {
        String name = "나코딩"; // 이름
        String id = "990130-1234567"; // 주민등록번호
        String phone = "010-1234-5678"; // 전화번호

        System.out.println("이름 : " + getHiddenData(name, 1)); // 개인정보, 비공개 시작 위치
        System.out.println("주민등록번호 : " + getHiddenData(id, 8));
        System.out.println("전화번호 : " + getHiddenData(phone, 9));
    }
}

'TIL > JAVA' 카테고리의 다른 글

23.05.22  (0) 2023.05.22
23.05.04  (0) 2023.05.04
23.05.02  (0) 2023.05.02
23.05.01  (0) 2023.05.01
23.04.28  (0) 2023.04.28