[Java] chapter_04 ~ 05

DEVELOPERS_Ivan ㅣ 2023. 9. 19. 12:48

chap04.Sec0401  조건문

- if문 - if(조건문1){실행문1} else if(조건문2){실행문} else{실행문3}
=> 조건문1 true 실행문1 실행되고 조건문2 true 실행문2 가 실행되고 모두 아니면 실행문3 실행

- switch문 - switch(변수) { case 값1 : }실행문1;break; case 값2 : 실행문2;break; default : 실행문3; break;

- 랜덤 자동 숫자 뽑기 : int num = (int) (Math.random() * 10) + 1;

- 랜덤 함수 : Math.random() : 0 ~ 1 사이의 숫자(실수)를 내보내기(return)
1 ~ 10 까지의 정수를 뽑기
가공 :
1 <= x < 11 의 정수 뽑기로 변환
1) 0.0 <= Math.random() < 1.0
2) 0.0 * 10 <= Math.random() * 10 < 1.0 * 10
3) (int)0.0 * 10 <= (int)Math.random() * 10 < (int)1.0 * 10
       => 0 <= (int)Math.random() * 10 < 10
4) 0 + 1 <= (int)Math.random() * 10 + 1 < 10 + 1
더보기
package chap04;

/**
 * packageName : chap04
 * fileName : Sec0401
 * author : GGG
 * date : 2023-09-19
 * description :    조건문
 * 요약 :
 *         - if문 - if(조건문1){실행문1} else if(조건문2){실행문} else{실행문3}
 *          => 조건문1 true 실행문1 실행되고 조건문2 true 실행문2 가 실행되고
 *          모두 아니면 실행문3 실행
 *
 *         - switch문 - switch(변수) { case 값1 : }
 *          실행문1;break;
 *          case 값2 : 실행문2;break;
 *          default : 실행문3; break; (default에 break는 생략 가능)
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-19         GGG          최초 생성
 */
public class Sec0401 {
    /**
     * 예제 1 : 초기값이 90 이상이면 점수가 90보다 큽니다.
     * 등급은 A 입니다. 출력
     * 90 이하이면 점수가 90보다 작습니다.
     * 등급은 B 입니다. 출력
     */
    public void exam01() {
        int score = 93; // 초기값

        if (score >= 90) {
            System.out.println("점수가 90보다 큽니다.");
            System.out.println("등급은 A 입니다.");
        } else {
            System.out.println("점수가 90보다 작습니다.");
            System.out.println("등급은 B 입니다.");
        }
    }

    /**
     * 자바 랜덤 함수 소개 하는 예제
     * 랜덤 함수 : Math.random() : 0 ~ 1 사이의 숫자(실수)를 내보내기(return)
     * 1 ~ 10 까지의 정수를 뽑기
     * 가공 :
     * 1 <= x < 11 의 정수 뽑기로 변환
     * 1) 0.0 <= Math.random() < 1.0
     * 2) 0.0 * 10 <= Math.random() * 10 < 1.0 * 10
     * 3) (int)0.0 * 10 <= (int)Math.random() * 10 < (int)1.0 * 10
     * => 0 <= (int)Math.random() * 10 < 10
     * 4) 0 + 1 <= (int)Math.random() * 10 + 1 < 10 + 1
     */
    public void exam02() {
        // 예제 : 주사위를 던져서 나오는 숫자를 화면에 출력하세요.
        // 단, 1 ~ 6 까지의 정수 숫자 범위

        int num = (int)(Math.random() * 6) + 1;    // TODO : 6 (실행할 때마다 값은 바뀐다)

//      조건문
        if (num == 1) {
            System.out.println("1번");
        } else if (num == 2) {
            System.out.println("2번");
        } else if (num == 3) {
            System.out.println("3번");
        } else if (num == 4) {
            System.out.println("4번");
        } else if (num == 5) {
            System.out.println("5번");
        } else {
            System.out.println("6번");
        }
    }

    /**
     * switch 문을 이용해서 코딩하기
     * 예제 : 부장이면 "700만원" 출력하고 , 과장이면 "500만원" 출력하고,
     * 그외에는 "300만원" 을 출력하세요
     */
    public void exam03() {
        String position = "과장"; // 초기값

        switch (position) {
            case "부장" :
                System.out.println("700만원");
                break;

            case "과장" :
                System.out.println("500만원");
                break;

            default :
                System.out.println("300만원");
                break;  // 생략가능
        }
    }
}   // end of class

chap04.Sec0402  반복문

- for문 : for(초기화식; 조건식; 증감식) {반복문;}
=> 조건식이 true 일 때만 반복문이 실행됨

- while 문 : 초기화식;
while(조건식) { 반복문; 증감식; }

- 예제 1 ~ 10까지 숫자를 화면에 출력
- 예제 1 ~ 100까지 합을 출력 : 반복문 이용(누적합)
- 예제 while 문을 활용한 무한루프 코딩 후 break 빠져 나오기
- 예제 continue 문 계속 이라는 예약어 사용
- 예제 반복문의 라벨 중첩 for문
더보기
package chap04;

/**
 * packageName : chap04
 * fileName : Sec0402
 * author : GGG
 * date : 2023-09-19
 * description :    반복문
 * 요약 :
 *      - for문 : for(초기화식; 조건식; 증감식) {반복문;}
 *      => 조건식이 true 일 때만 반복문이 실행됨
 *
 *      -  while 문 : 초기화식;
 *      while(조건식) {
 *      반복문;
 *      증감식;
 *      }
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-19         GGG          최초 생성
 */
public class Sec0402 {
    /**
     * 예제1 : 1 ~ 10까지 숫자를 화면에 출력하세요.
     * 단, 반복문 이용
     */
    public void exam01() {
        for (int i = 1; i < 11; i++) {
            System.out.println(i);
        }
    }

    /**
     * 예제2 : 1 ~ 100까지 합을 출력 : 반복문 이용(누적합)
     * sum = sum + i (i 는 1씩 증가)
     */
    public void exam02() {
        int sum = 0;

        for (int i = 1; i < 100; i++) {
            sum = sum + i;
        }
        System.out.println(sum);
    }

    /**
     * 예제3 : 주사위 2편 : 주사위를 던져서 나오는 숫자를 계속 화면에 출력하되
     * 6이 나오면 반복문을 중단하고 빠져나오세요
     * 단, 빠져 나올때 프로그램종료 라고 출력하세요
     * 랜덤함수 : int num = (int)(Math.random()*6) + 1;
     * 힌트 : 무한루프 코딩 후에 6이 나오면 break 빠져나오기
     */
    public void exam03() {

        while (true) {
            int num = (int) (Math.random() * 6) + 1; // 주사위 돌리기
//              주사위 숫자 화면 출력
            System.out.println(num);
//          TODO : 6 나오면 빠져나가기
            if (num == 6) {
                break;  // 반복문 강제 중단
            }
        }
        System.out.println("프로그램 종료");  // TODO : (실행할 때마다 값은 바뀐다)
    }

    /**
     * 예제4 : 1 ~ 10 사이의 수 중에서 짝수만 출력하는 코드 : continue 문 사용하기
     * 힌트 : continue : 아래 실행을 skip하고 반복문 계속 진행시키기
     */
    public void exam04() {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 1) {
                continue;   // 밑에 출력 명령문이 실행 안됨
            }
            System.out.println(i);
        }
    }

    /**
     * (참고)새로나온 사용법 : 반복문의 라벨
     * 활용 : 중첩 for문에서 주로 사용
     */
    public void exam05() {
        Outter:
        for (char upper = 'A'; upper <= 'Z'; upper++) {
            for (char lower = 'a'; lower <= 'z'; lower++) {
                System.out.println(upper + "-" + lower); // 화면 출력
//                g 가 나오면 (안쪽/바깥쪽 모두) 반복문 중단
                if(lower == 'g') {
                    break Outter; // 2중 반복문이 모두 중단됨
                }
            }
        }
        System.out.println("프로그램 종료");
    }

}   // end of class

chap04.Verify04 조건문/반복문 연습문제
****) 중첩 for문을 이용하여 방정식
더보기
package chap04;

/**
 * packageName : chap04
 * fileName : Verify04
 * author : GGG
 * date : 2023-09-19
 * description : 연습문제 : 조건문/반복문
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-19         GGG          최초 생성
 */
public class Verify04 {
    /**
     * for문을 이용해서 1부터 100까지의 정수 중에서
     * 3의 배수의 총합을 구하는 코드를 작성해 보세요
     */
    public void exam01() {
        int sum = 0;

        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0) {    // 3의 배수
                sum = sum + i;   // 누적합
            }
        }
//      sum  출력
        System.out.println(sum);    // 1683
    }

    /**
     * while문과 Math.random() 함수를 이용해서 2개의 주사위를 던졌을 때
     * 나오는 눈을(눈1, 눈2) 형태로 출력하고,
     * 눈의 합이 5가 아니면 계속 주사위를 던지고,
     * 눈의 합이 5이면 실행을 멈추는 코드를 작성해 보세요.
     * 힌트 : int num1 = (int) (Math.random() * 6) + 1;
     * int num2 = (int) (Math.random() * 6) + 1;
     */
    public void exam02() {
//        무한 루프 코드
        while (true) {
//            주사위 2개
            int num1 = (int) (Math.random() * 6) + 1;  // 주사위 #1
            int num2 = (int) (Math.random() * 6) + 1;  // 주사위 #2
//            (num1, num2) 출력
            System.out.println("(" + num1 + ", " + num2 + ")");
//            중단조건 : num1 + num2 == 5 중단
            if ((num1 + num2) == 5) {
                break;
            }
        }
        System.out.println("프로그램 종료");
    }

    /**
     * 중첩 for문을 이용하여 방정식 4x + 5y = 60의 모든 해를 구해서 (x, y) 형태로 출력해 보세요.
     * 단, x와 y는 10 이하의 자연수입니다.
     * for(int x=1; x<=10; x++) {
     * for(int y=1; y<=10; y++) {
     * (4 * x) + (5 * y) = 60의 모든 해 구해서 출력
     * }
     * }
     */
    public void exam03() {
        for (int x = 1; x <= 10; x++) {
            for (int y = 1; y <= 10; y++) {
                if ((4 * x) + (5 * y) == 60) {
                    System.out.println("(" + x + "," + y + ")");
                }
            }
        }
    }

    /**
     * for문을 이용해서 다음과 같이 *를 출력하는 코드를 작성해 보세요.
     * 출력 : *    (1행(i) : * 1개(j))  i == j : 줄바꿈, j 는 i의 숫자만큼 반복문을 실행
     * **   (2행(i) : * 2개(j))  i == j : 줄바꿈, j 는 i의 숫자만큼 반복문을 실행
     * ***  (3행(i) : * 3개(j))  i == j : 줄바꿈, j 는 i의 숫자만큼 반복문을 실행
     * **** (4행 : * 4개)        i == j : 줄바꿈, j 는 i의 숫자만큼 반복문을 실행
     */
    public void exam04() {
        for (int i = 1; i <= 4; i++) {  // 4번 반복
            for (int j = 1; j <= i; j++) {
                System.out.print("*");  // '*' 출력
            }
            System.out.println();   // 줄 바꿈
        }
    }

    public void exam05() {
        String result = "";
        for (int i = 0; i < 4; i++) {
            result += "*";
            System.out.println(result);
        }
    }

    public void exam06() {
        for (int i = 1; i < 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*"); // 별출력 + 줄바꿈 안함
                if (i == j) {
                    System.out.println(); // 줄바꿈
                }
            }
        }
    }

}   // end of class

chap05.Sec0501 *** 자바 메모리(참조 자료형과 참조 변수)

- 기본 자료형 : int(4), long(8), float(4), double, boolean 자료형
=> 스택 방 : 값이 그대로 저장됨

- 참조 자료형 : String(문자열), 배열, 객체
=> 스택 방 : 주소(방번호) 값만 저장되고, => 힙 방 : 값이 저장됨

- JVM(Java Virtual 머신) : 자바가상머신 : jdk (자바가상머신) 역할 :
 linux/windows(운영체제) 모든 곳에서 실행할 수 있게 만드는 프로그램

- 비교연산자(==) : 기본자료형에서는 값을 비교하고 참조자료형에서는 주소(방번호)를 비교하게 됨(스택방의 저장된 값을 비교함)

- null 포인트 에러(예외) : 프로그램을 강제 비정상 중단함
더보기
package chap05;

/**
 * packageName : chap05
 * fileName : Sec0501
 * author : GGG
 * date : 2023-09-19
 * description : TODO : ***자바 메모리(참조 자료형과 참조 변수)
 * 요약 :
 *          기본 자료형 : int(4), long(8), float(4), double, boolean 자료형
 *          => 스택 방 : 값이 그대로 저장됨
 *          참조 자료형 : String(문자열), 배열, 객체
 *          => 스택 방 : 주소(방번호) 값만 저장되고
 *          => 힙 방 : 값이 저장됨
 *          JVM(Java Virtual 머신) : 자바가상머신 : jdk (자바가상머신)
 *          역할 : linux/windows(운영체제) 모든 곳에서 실행할 수 있게 만드는 프로그램
 *          비교연산자(==) : 기본자료형에서는 값을 비교하고
 *                         참조자료형에서는 주소(방번호)를 비교하게 됨
 *                        (스택방의 저장된 값을 비교함)
 *          null 포인트 에러(예외) : 프로그램을 강제 비정상 중단함
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-19         GGG          최초 생성
 */
public class Sec0501 {
    /**
     * 비교연산자(==) 와 equals 함수 예제
     */
    public void stringEqualsExam() {
//       참조 자료형
//       참조자료형 객체변수 = new 생성자함수();
//       메모리에 랜덤한 주소(방번호)값으로 생성됨
        String strVar1 = new String("신민철");
        String strVar2 = new String("신민철");

//      TODO : 주소(방번호) 비교 : 개발자 입장에서는 의미 없음
        if (strVar1 == strVar2) {
            System.out.println("두개의 주소가 같음");
        } else {
            System.out.println("두개의 주소가 다름");
        }

//      TODO : 개발자는 equals() 함수 사용 : 데이터 값을 비교하는 함수
        if (strVar1.equals(strVar2) == true) {
            System.out.println("두개의 값이 같음");
        }

//      TODO : null 포인터 예외(에러)
//      배열에서 null 에러
        int[] intArray = null;  // 방이 없음(공간 없음)
        intArray[0] = 10;   // 0번지 방에 10번을 넣으니 null 에러가 발생

//      TODO : 객체에서 null 에러
        String str = null;  // 권장 코딩 : String str="";
//      TODO : 문자열의 길이를 가져오는 함수 : 문자열.length()
        System.out.println("총 문자수: " + str.length());   // null 에러 발생
    }

}   // end of class

chap05.Sec0502 배열

- 배열 : 같은 자료형의 데이터를 연속된 공간에 나열하고 인덱스를 부여해 놓은 자료구조
- 인덱스 : 배열 항목에 붙인 번호, 0 ~ n 까지의 범위
- 배열 선언(정의) : 자료형[ ] 변수;
- 배열 생성 : 1) 자료형[] 변수 = {값1, ... 값n};
                     2) 자료형[] 변수 = new 자료형[길이];
                     3) 자료형[] 변수 = new 자료형[길이]{값1, ... 값n};
- 배열 길이 : 배열의 값의 개수, 배열변수.length (읽기 전용)

- 다차원 배열 : 배열 안에 또다른 배열이 있음
                        1) 자료형[ ][ ] 변수 = new 자료형[크기][크기];
                        2) 자료형[ ][ ] 변수 = {{값1...}, {값1...}};
                             => for문 코딩 (2개사용)
                             => int[ ][ ] arr = {{1,2,3}, {4,5,6}}
                             => 팁 ! : for(int i=1;i<=2;i++){
                                                for(int j=1; j<=3;j++) {
                                                 }
                                            }

- 향상된 for 문 : for(자료형 변수 : 배열) {} => 자동으로 인덱스 증가

- 배열 안에 값을 간단히 확인하기
사용법 : Arrays.toString(배열변수)

- 얇은 복사(shallow copy) vs (***)깊은 복사(deep copy) 
스택방       |                              힙방
oldArray    | 100 <--------> 100 : {1,2,3}
newArray  | 200 <--------> 200 : {1,2,3}

- 예제 학생 10명의 성적을 배열을 사용하여 저장하고 평균 값 구하기
- 예제 배열에서 함수의 매개변수로 전달시 주의점
int[] scores = {84, 91, 88};
int sum3 = add({84, 91, 88}); // TODO : 에러 발생
더보기
package chap05;

import java.util.Arrays;

/**
 * packageName : chap05
 * fileName : Sec0502
 * author : L.DH
 * date : 2023-09-19
 * description :     배열
 * 요약 :
 *          - 배열 : 같은 자료형의 데이터를 연속된 공간에 나열하고 인덱스를 부여해 놓은 자료구조
 *          - 인덱스 : 배열 항목에 붙인 번호, 0 ~ n 까지의 범위
 *          - 배열 선언(정의) : 자료형[] 변수;
 *          - 배열 생성 : 1) 자료형[] 변수 = {값1, ... 값n};
 *                       2) 자료형[] 변수 = new 자료형[길이];
 *                       3) 자료형[] 변수 = new 자료형[길이]{값1, ... 값n};
 *          - 배열 길이 : 배열의 값의 개수, 배열변수.length (읽기 전용)
 *          - 다차원 배열 : 배열 안에 또다른 배열이 있음
 *                      1) 자료형[][] 변수 = new 자료형[크기][크기];
 *                      2) 자료형[][] 변수 = {{값1...}, {값1...}};
 *                      => for문 코딩 (2개사용)
 *                      => int[][] arr = {{1,2,3},{4,5,6}}
 *                      => 팁 ! : for(int i=1;i<=2;i++){
 *                                  for(int j=1; j<=3;j++) {
 *                                      }
 *                                }
 *          - 향상된 for 문 : for(자료형 변수 : 배열) {} => 자동으로 인덱스 증가
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-09-19         L.DH          최초 생성
 */
public class Sec0502 {
    /**
     * 예제1 : 학생 10명의 성적을 저장하고 평균값 구하기
     * TODO : 배열의 1번째 정의 방법
     */
    public void getStudent() {
//      배열의 초기값
        int[] score = {83, 84, 85, 86, 87, 88, 89, 90, 91, 92};

        int sum = 0;    // 합계 변수
//      for문 단축키 : fori
        for (int i = 0; i < 10; i++) {
            sum = sum + score[i];   // 배열의 값 모두 더하기(누적합)
        }
        double avg = sum / 10; // 평균값
        System.out.println("sum : " + sum + ", avg : " + avg);  // sum : 875, avg : 87.0
    }

    /**
     * TODO : 예제2 : 배열에서 함수의 매개변수로 전달시 주의점
     */
    public void arrayFunc() {
        int[] scores = {84, 91, 88};

        int sum2 = add(scores); // ok ,가능
//        이렇게 하면 안됨
//        int sum3 = add({84, 91, 88}); // TODO : 에러 발생
//        참고)
        int sum4 = add(new int[]{84, 91, 88});  // ok ,가능
        System.out.println(sum2);
        System.out.println(sum4);
    }

    //    더하기 함수 생성해서 호출해서 쓰기
    public int add(int[] scores) {
        int sum = 0;
        for (int i = 0; i < 3; i++) {
            sum += scores[i];
        }
        return sum;
    }

    /**
     * TODO : arrayTwo
     * TODO : 배열의 2번째 정의 방법
     */
    public void arrayTwo() {
        int[] arr1 = new int[3];  // 배열의 정의(선언) : 빈방 만들기(메모리)
//          정수 : 기본값(0), 문자열:  null, 실수 : 0.0 등
//      배열의 3가지 방에 값넣기 : 배열의 사용
        arr1[0] = 10;
        arr1[1] = 20;
        arr1[2] = 30;
//      TODO : 배열 출력
        for (int i = 0; i < 3; i++) {
            System.out.println(arr1[i]);    // 배열 값 출력
            // 10
            // 20
            // 30
        }
    }
//      TODO : 배열 안에 값을 간단히 확인하기        
//      사용법 : Arrays.toString(배열변수)
//        System.out.println(Arrays.toString(arr1));  // [10, 20, 30] // import java.util.Arrays; 필요
//    }

    /**
     * TODO : (***)얇은 복사(shallow copy) vs 깊은 복사(deep copy)
     */
    public void copyArray() {
//      TODO : 얇은 복사
        int[] oldArray = {1, 2, 3};
        int[] copyArray = oldArray; // 얇은 복사(주소(방번호)를 복사)
//      스택방     |                         힙방
//      oldArray  | 100   <-------->     100 : {10,2,3}
//      copyArray | 100
//      TODO : 얇은 복사 특징 : oldArray 값을 변경하면 copyArray 값도 같이 변경됨
//             copyArray 값을 변경해도 원본인 oldArray 도 변경됨

//      TODO : (***)깊은 복사(위의 현상을 피하고자 깊은 복사를 함)
//      스택방     |                         힙방
//      oldArray  | 100   <-------->     100 : {1,2,3}
//      newArray  | 200   <-------->     200 : {1,2,3}
        int[] newArray = new int[3];    // 깊은 복사용 변수(방만들기 : 랜덤 주소(방번호))
//      fori : 반복문 이용
        for (int i = 0; i < 3; i++) {
            newArray[i] = oldArray[i];  // TODO : (***) 깊은 복사(원본값 바뀌어도 복사본이 바뀌지 않음)
        }
    }

    /**
     * 향상된 for 문 : for(자료형 변수 : 배열) {반복문}
     * 아래 점수 총합을 출력하세요, 평균도 출력하세요.
     */
    public void AdvancedExam() {
        int[] scores = {95, 71, 84};    // 국영수 점수 배열
        int sum = 0;    // 합계 변수
        for (int s: scores) {
            sum = sum + s;  // 누적합 구하기
        }
        System.out.println("점수 총합 : " + sum);   // 점수 총합 : 250
        double avg = (double) sum / scores.length;   // 평균 값 구하기
        System.out.println("점수 평균 : " + avg);   // 점수 평균 : 83.33333333333333
    }

}   // end of class

chap05.Sec0503 열거형
* Week 열거형(enum) 생성

- 열거 자료형 : 몇 가지로 제한된 상수를 가지는 자료형
- 사용법(정의) : enum 변수명{ 상수1, 상수2, ... 상수n }
- 클래스 내에서 사용
- 열거형이름.상수명 ex) Week.MONDAY

- 예제 제한된 상수를 가지는 자료형으로 날짜 출력하기
더보기
package chap05;

/**
 * packageName : chap05
 * fileName : Week
 * author : L.DH
 * date : 2023-09-19
 * description :    열거형 클래스
 * 요약 : 
 *          열거 자료형 : 몇 가지로 제한된 상수를 가지는 자료형
 *          사용법(정의) : enum 변수명{ 상수1, 상수2, ... 상수n }
 *          클래스 내에서 사용
 *              열거형이름.상수명 ex) Week.MONDAY
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————————————————————————————————
 * 2023-09-19         L.DH         최초 생성
 */
public enum Week {
//    월,화,수,목,금,토,일 정의(상수)
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
} // end of enum
더보기
package chap05;

import java.util.Calendar;

/**
 * packageName : chap05
 * fileName : Sec0503
 * author : L.DH
 * date : 2023-09-19
 * description : 열거형
 * 요약 :         제한된 상수를 가지는 자료형으로 날짜 출력하기
 *               열거 자료형 : 몇 가지로 제한된 상수를 가지는 자료형
 *               사용법(정의) : enum 변수명{ 상수1, 상수2, ... 상수n }
 *               클래스 내에서 사용
 *               열거형이름.상수명 ex) Week.MONDAY
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————————————————————————————————
 * 2023-09-19         L.DH         최초 생성
 */
public class Sec0503 {
    /**
     * 열거형 사용 예제(오늘 날짜 출력하기)
     */
    public void EnumWeek() {
//      열거형 변수 정의
        Week today = null;

//      달력 객체 : Calendar
        Calendar calendar = Calendar.getInstance(); // TODO : 달력 객체 가져오기
        int week = calendar.get(Calendar.DAY_OF_WEEK);  // TODO : 현재 요일 가져오기(1(일요일) ~ 7 숫자)
//        조건식
        switch (week) {
            case 1:
                today = Week.SUNDAY; break;
            case 2:
                today = Week.MONDAY; break;
            case 3:
                today = Week.TUESDAY; break;
            case 4:
                today = Week.WEDNESDAY; break;
            case 5:
                today = Week.THURSDAY; break;
            case 6:
                today = Week.FRIDAY; break;
            case 7:
                today = Week.SATURDAY; break;
        }
        System.out.println("오늘 요일 :" + today);
    }
}

chap05.Verify05 Sec05 연습문제

- 배열에서 최대값 구하기
- 중첩 for문을 이용해서 주어진 배열의 전체 항목의 합과 평균 구하기
더보기
package chap05;

/**
 * packageName : chap05
 * fileName : Verify05
 * author : L.DH
 * date : 2023-09-19
 * description :
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————————————————————————————————
 * 2023-09-19         L.DH         최초 생성
 */
public class Verify05 {
    /**
     * 문제1) 주어진 배열에서 최대값을 구해보세요.
     * //    결과 :
     * //          max: 8
     * // 1) max 변수 = 0
     *    2) 반복문 돌려서 max < array[i] => max = array[i]
     *    3) 반복문 종료하면 max 값에는 최대값이 들어가있음
     *    참고) Math.max(값1, 값2) : 배열은 없음
     */
    public void exam01() {
        int[] array = {1, 5, 3, 8, 2};
        int max = 0;    // 최소값 초기화

        for (int i = 0; i < array.length; i++) {
            if (max < array[i]) {    // max 값을 비교 : 작으면 큰 값을 넣기
                max = array[i];
            }
        }
//         최종적으로 최대값이  max 에 들어가 있음
        System.out.println("max : " + max);
    }

    /**
     * 문제2) 중첩 for문을 이용해서 주어진 배열의 전체 항목의 합과 평균을 구해보세요.
     */
    public void exam02() {
        int[][] array = {{95, 86}, {83, 92, 96}, {78, 83, 93, 87, 88}};

        int sum = 0;    // 합계 변수
        double avg = 0.0;   // 평균 변수
        int count = 0;  // 배열의 원소 개수 세는 변수
        
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                sum = sum + array[i][j];    // 2차원 배열 누적합
                count = count + 1;  // 배열 원소 개수 세기
            }
            avg = (double) sum / count; // 평균
        }
        System.out.println(sum);
        System.out.println(avg);
    }

}   // end of class

 

'Java' 카테고리의 다른 글

[Java] chapter_07  (0) 2023.09.21
[Java] chapter_06  (0) 2023.09.20
[Java] chapter_01 ~ 03  (0) 2023.09.18
[JAVA] 자료형과 변수의 기본 문법언어 특성 및 소스 코드 구성  (0) 2023.08.20
[JAVA] 언어 특성 및 소스 코드 구성  (0) 2023.08.20