Sam Park Blog.

Sam의 워드프레스 블로그

Sam Park Blog.

Sam의 워드프레스 블로그

미분류

자바 코딩 자율학습단 14기 2주차 학습 후기


자바 코딩 자율학습단 14기 2주차 수업을 시작하며, 반복문부터 클래스까지 더욱 심화된 내용을 학습했습니다. 1주차에 다진 기본기를 바탕으로, 2주차에는 프로그램의 흐름을 제어하고 데이터를 효율적으로 관리하는 방법을 익혔습니다. 각 일자별 학습 내용을 정리하며 2주차를 마무리하겠습니다.




6일차 : 조건에 따라 흐름 바꾸기: 조건문


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 장학금 지급 대상 확인
        System.out.println("학년을 입력하세요:");
        int grade = scanner.nextInt();

        if (grade == 4) {
            System.out.println("점수를 입력하세요:");
            int score = scanner.nextInt();

            if (score >= 90) {
                System.out.println("장학금 지급 대상입니다.");
            } else {
                System.out.println("장학금 지급 대상이 아닙니다.");
            }
        } else {
            System.out.println("장학금 지급 학년이 아닙니다.");
        }

        // 학점 계산 (삼항 연산자 사용)
        System.out.println("점수를 입력하세요:");
        int score = scanner.nextInt(); // score 변수 재사용
        String letterGrade = (score >= 90) ? "A" : (score >= 80) ? "B" : (score >= 70) ? "C" : "D";

        System.out.println("당신의 학점은: " + letterGrade);
    }
}


오늘은 자바의 제어문인 조건문, switch문, 삼항연산자를 집중적으로 학습했습니다. 장학금 지급 대상 판별 코드를 통해 조건문의 기본 구조와 흐름을 이해했으며, 학점 계산 코드를 switch문으로 구현해보는 대신, 삼항연산자를 사용하여 더욱 간결하고 가독성 높은 코드를 작성하면서 오늘 학습한 조건문을 능숙하게 활용하도록 연습해봤습니다. 각 제어문의 특징과 장단점들을 알 수 있는 시간이였으며, 상황에 맞게 적절히 선택해서 코드를 작성하는데 많은 도움이 되는 시간이였습니다.




7일차 : 같은 작업 반복하기: 반복문


public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println("1부터 100까지의 합: " + sum);

        for (int i = 2; i <= 3; i++) {
            System.out.println("--- " + i + "단 ---");
            for (int j = 1; j <= 3; j++) {
                System.out.println(i + " x " + j + " = " + (i * j));
            }
        }
    }
}


7일차에는 for문과 while문을 공부하면서 반복문의 개념을 이해할수 있는 시간이였습니다. 1부터 100까지 계산하는 코드를 for문으로 구현하여 반복문의 기본적인 사용법을 익힌후, 구구단을 출력하는 코드를 for문으로 작성하며 반복문을 익혔습니다. while문을 사용하여 구구단을 출력하는 코드를 작성하며 for문과의 차이점을 이해하고, 초기화, 조건식, 증감식을 직접 제어해야 한다는 점을 배웠습니다.




8일차 : 같은 작업 반복하기: 반복문


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.println("3 x " + i + " = " + (3 * i));
            i++;
        } while (i <= 3);

        Scanner scanner = new Scanner(System.in);
        int sum = 0;
        while (true) {
            System.out.print("짝수를 입력하세요 (합이 10000 넘으면 종료): ");
            int input = scanner.nextInt();
            if (input % 2 == 1) {
                System.out.println("홀수입니다. 다시 입력해주세요.");
                continue;
            }
            sum += input;
            System.out.println("결과: " + sum);
            if (sum > 10000) {
                System.out.println("합이 10000을 초과하여 종료합니다.");
                break;
            }
        }
        System.out.println("프로그램 종료!");
    }
}


8일차에는 do-while문, 무한 루프, continue/break를 활용한 흐름 제어하기에 대해 학습했습니다. do-while문을 통해 조건에 상관 없이 코드가 최소 한 번 실행됨을 확인했고, 무한 루프를 만들고 조건에 따라 break문으로 탈출하는 방법을 익혔습니다. continue문을 사용하여 특정 조건에서 반복문의 나머지 부분을 건너뛰는 방법 또한 학습했습니다. 이러한 흐름 제어 기법을 통해 더욱 유연하고 효율적인 프로그램을 작성할 수 있게 되었습니다.




9일차 : 여러 값 한번에 저장하기: 배열


public class Main {
    public static void main(String[] args) {
        int[] scores = {80, 90, 100, 70};
        scores[0] = 50;
        System.out.println("1번 학생 점수: " + scores[0]);

        int[][] matrix = new int[3][3];
        int num = 1;
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = num++;
            }
        }
        System.out.println("행렬의 (1,1) 값: " + matrix[0][0]);

        int[][] gugudan = new int[3][3];
        for (int i = 0; i < gugudan.length; i++) {
            for (int j = 0; j < gugudan[i].length; j++) {
                gugudan[i][j] = (i + 1) * (j + 1);
            }
        }
        System.out.println("구구단 (2x2) 값: " + gugudan[1][1]);
    }
}


9일차 학습에서는 배열의 기본 개념과 활용법을 익혔습니다. 1차원 배열을 통해 학생 점수를 관리하고, 특정 요소의 값을 변경하는 방법을 실습했습니다. 2차원 배열을 활용하여 행열을 생성하고 값을 할당하는 방법을 익혔으며, 2차원 배열을 활용하여 기존에 for문으로 학습해봤던 구구단을 배열로 활용해서 코드를 작성해 보면서 배열 활용법을 익혔습니다. 자료형을 효율적으로 관리하고 처리하는데 배열이 도움이 된다는 것을 알 수 있는 시간 이였습니다.




10일차 : 클래스


package ch07;

public class Main {
    public static void main(String[] args) {
        Car car = new Car();    // 기본 생성자로 객체 생성
        System.out.println("");     // 구분을 위한 추가
        Car myCar = new Car("Hyundai", 2025);   // 매개변수 2개인 생성자 호출
        System.out.println("");     // 구분을 위한 추가
        Car yourCar = new Car("Kia", 2025, "Black");    // 매개변수 3개인 생성자 호출
        yourCar.carInfo();
    }
}


package ch07;

public class Car {
    // 클래스 변수
    static int countOfCars = 0;     // 자동차 수량
    // 인스턴스 변수
    String brand;       // 브랜드
    int year;       // 연식
    String color;       // 색
    // 기본 생성자
    public Car() {
        System.out.println("새로운 자동차 객체가 생성됐습니다.");
        this.carInfo();     // 인스턴스 메소드 호출
    }
    // 매개변수가 2개 있는 생성자
    public Car(String brand, int year) {
        System.out.println("새로운 자동차 객체가 생성됐습니다.");
        this.brand = brand;
        this.year = year;
        this.color = "white";
        this.carInfo();     // 인스턴스 메소드 호출
    }
    // 매개변수가 3개 있는 생성자
    public Car(String brand, int year, String color) {
        System.out.println("새로운 자동차 객체가 생성됐습니다.");
        this.brand = brand;
        this.year = year;
        this.color = color;
//        this.carInfo();     // 인스턴스 메소드 호출
    }
    // 인스턴스 메소드
    public void carInfo() {
        System.out.println("--- 자동차 정보 ---");
        System.out.println("브랜드: " + brand);
        System.out.println("연식: " + year);
        System.out.println("색: " + color);
    }
    // 클래스 메소드
    public static void setCountOfCars() {
        System.out.println("자동차 수량: " + countOfCars);
    }
}


10일차에는 객체지향 프로그래밍의 핵심인 클래스와 객체에 대해 학습했습니다. Car 클래스를 설계하고 다양한 생성자를 통해 객체를 초기화하는 방법을 익혔습니다. 특히, 생성자 오버로딩을 통해 객체 생성 시 다양한 초기값을 설정할 수 있음을 이해했습니다. this()를 사용하여 생성자 내부에서 다른 생성자를 호출하는 방법을 배우고 코드 중복을 줄이는 효율적인 방법을 익혔습니다. 객체지향 프로그래밍의 기본기를 다지는 중요한 시간 이였습니다.




2주차 마무리


2주차 학습을 통해 조건문, 반복문, 배열, 그리고 클래스라는 자바 프로그래밍의 핵심 개념들을 익힐 수 있었습니다. 1주차에 다진 기본기를 바탕으로, 2주차에는 더욱 복잡하고 다양한 문제들을 해결할 수 있는 능력을 키울수 있었습니다. 이제 절반을 끝냈으니 남은 2주차도 열심히 학습하면서 스터디 완주와 함께 자바 프로그래밍 실력을 향상시켜 나가겠습니다.



답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다