[혼공자] 2주차_자바의 분기점, 반복의 시작

경운·2025년 7월 9일
0

혼공자

목록 보기
2/7
post-thumbnail

혼공자 학습일정표


📚 2주차 미션 정리

🔖 기본 미션 (필수)

  • p.164 직접 해보는 손코딩(switch문) 실행 후 결과 화면 캡쳐하기
package chap04;

public class SwitchEx {
    public static void main(String[] args) {
        int num = (int) (Math.random() * 6) + 1;

        switch (num) {
            case 1:
                System.out.println("1번이 나왔습니다.");
                break;

            case 2:
                System.out.println("2번이 나왔습니다.");
                break;

            case 3:
                System.out.println("3번이 나왔습니다.");
                break;

            case 4:
                System.out.println("4번이 나왔습니다.");
                break;

            case 5:
                System.out.println("5번이 나왔습니다.");
                break;

            default:
                System.out.println("6번이 나왔습니다.");
                break;
        }
    }
}


🔖 추가 미션 (선택)

  • p.223 하단 (05-2) 확인 문제 6번 풀고 정리하기
package chap05;

import java.util.Scanner;

public class check_06 {
    public static void main(String[] args) {
        boolean run = true;
        int studentNum = 0;
        int[] scores = null;
        Scanner scanner = new Scanner(System.in);

        while(run) {
            System.out.println("--------------------------------");
            System.out.println("1. 학생수 | 2. 점수입력 | 3. 점수 리스트 | 4. 분석 | 5. 종료");
            System.out.println("--------------------------------");
            System.out.print("선택> ");

            int selectNo = Integer.parseInt(scanner.nextLine());

            if(selectNo == 1) {
                System.out.print("학생수> ");
                studentNum = Integer.parseInt(scanner.nextLine());
                scores = new int[studentNum];

            } else if (selectNo == 2) {
                for(int i = 0; i < studentNum; i++) {
                    System.out.print("scores[" + i + "]> ");
                    scores[i] = Integer.parseInt(scanner.nextLine());
                }

            } else if (selectNo == 3) {
                for(int i = 0; i < studentNum; i++) {
                    System.out.println("scores[" + i + "] " + scores[i]);
                }

            } else if (selectNo == 4) {
                int max = 0;
                int sum = 0;
                for (int s : scores) {
                    if (s > max) max = s;
                    sum += s;
                }
                double avg = (double) sum / studentNum;

                System.out.println("최고 점수: " + max);
                System.out.println("평균 점수: " + avg);

            } else if (selectNo == 5) {
                run = false;
            }
        }
        System.out.println("프로그램 종료");
    }
}


📌 Chap04 내용 정리 | 조건문과 반복문

🔀 조건문 정복하기 : if 와 switch

1. if문

if( 조건식 ) {
	실행문 1
  }
실행문 2
  • 조건식이 참인 경우 → 실행문 1 실행 후 실행문 2
  • 조건식이 거짓인 경우 → 실행문 1은 건너뛰고 실행문 2만 실행

2. if-else문

if( 조건식 ) {
    실행문 1
} else {
    실행문 2
}
실행문 3
  • 조건식이 참이면 → 실행문 1 → 실행문 3
  • 조건식이 거짓이면 → 실행문 2 → 실행문 3

3. if - else if - else문

if (조건식 1) {
    실행문 1
} else if (조건식 2) {
    실행문 2
} else {
    실행문 3
}
실행문 4 
  • 조건식 1이 참이면 → 실행문 1 → 실행문 4
  • 조건식 1이 거짓, 조건식 2가 참이면 → 실행문 2 → 실행문 4
  • 두 조건 모두 거짓이면 → 실행문 3 → 실행문 4

💡조건문은 {}괄호 블럭이 어디에서 시작하고 어디서 끝나는지 반드시 알아야함 실수 하기 매우 쉽다


4. switch문

→ 조건식에 참,거짓을 판별하는 것이 아닌, 변수가 어떤 값을 갖느냐에 따라 실행문이 결정

switch(변수) {
    case1:
        실행문 1
        break;
        
    case2:
        실행문 2
        break;
        
    default:
        실행문 3
}
  • 변수가 값1일 경우 → 실행문 1 실행 → break를 만나 switch 블록을 종료
  • 변수가 값1과 값2 모두 아닐 경우 → default로 이동 → 실행문 3 실행 후 종료

💡만약 변수가 값2이고 break문이 없으면 실행문 2 실행 후 실행문 3도 실행 해야한다


🔁 반복문 정복하기 : for, while 그리고 do-while

1. for문

package chap04;

public class forEx {
    public static void main(String[] args) {
        int sum = 0;

        for(int i = 1; i<=100; i++) {
            sum = sum + i;
        }
        System.out.println("1~100의 합 " + sum);
    }
}
  • 초기식: int i = 1 → 반복 변수 초기화
  • 조건식: i <= 100 → 조건이 참이면 반복
  • 증감식: i++ → 매 반복마다 i를 1씩 증가

📝 1부터 100까지 정수를 하나씩 더해서 sum에 누적


2. while문

package chap04;

public class whileEx {
    public static void main(String[] args) {
        int i = 1;
        while(i<=10) {
            System.out.println(i);
            i++;
        }
    }
}
  • 조건식: i<=10 → 조건이 참이면 반복
  • 1~10까지 총 10번 반복을 실행

3. do-while문

package chap04;

public class dowhileEx {
    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println(i); //실행문 1
            i++;                   //실행문 2
        } while(i<=10); 
    }
}
  • 실행문 1과 2를 우선 실행
  • 조건식: i<=10 → 조건이 참이면 반복
  • 조건식: i<=10 → 조건이 거짓이면 do-while문 종료

💡 break문continue문

break문

  • 반복문인 for문, while문, do-while문의 실행을 중지할 때 사용(switch문도 가능)

continue문

  • 반복문에서 continue문을 만나게 된다면 그 즉시 다음 증감식이나 조건식으로 이동

📌 Chap05 내용 정리 | 배열

📦 배열

  • 데이터를 연속된 공간에 나열 → 각 데이터에 인덱스를 부여함 인덱스는 0부터 시작

배열의 예제

package chap05;

public class ArrayEx {
    public static void main(String[] args) {
        int a[][] = {{1,2,3,4,5},{6,7}};

        System.out.println(a[0].length);
        System.out.println(a[1].length);
        System.out.println(a[0][0]);
        System.out.println(a[0][1]);
        System.out.println(a[1][1]);
    }
}
  • a[][]를 다차원 배열로 구성
    1 2 3 4 5
    6 7
    로 저장

  • a[0].length → a[0]행의 배열의 길이 5

  • a[1].length → a[1]행의 배열의 길이 2

  • a[0][0] → 1

  • a[0][1] → 2

  • a[1][1] → 7


객체를 참조하는 배열 예제

package chap05;

public class RefArrayEx {
    public static void main(String[] args) {
        String[] strArray = new String[3];

        strArray[0] = "abcd";
        strArray[1] = "abcd";
        strArray[2] = new String("abcd");

        System.out.println(strArray[0] == strArray[1]);
        System.out.println(strArray[0] == strArray[2]);
        System.out.println(strArray[0].equals(strArray[2]));
    }
}

결과는 true false true

  • strArray[0] 과 [1] 은 같은 주소값을 가지고 있음
  • strArray[2]는 new로 만들었기 때문에 다른 주소값을 가지고 있음
  • equals로 문자열만 비교하는 것을 사용해 true 출력

0개의 댓글