Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

이상민

[혼공자바 2주차] Chapter 04 ~ 05 본문

혼공

[혼공자바 2주차] Chapter 04 ~ 05

sm1118sm 2025. 7. 7. 22:34

혼자공부하는 자바 2주차 (p.156 ~ p.232) 
 
 

04. 조건문과 반복문

04-1 조건문: if, switch

구문설명

if (조건) { 실행문; } 조건이 참이면 블록 실행
if ... else 조건이 거짓이면 else 블록 실행
if ... else if ... else 다중 조건 분기 처리
switch (변수) { case 값: ... break; default: ... } 변수의 값에 따라 분기 실행

예제 코드 (switch):

Scanner sc = new Scanner(System.in);
int a = sc.nextInt();

switch (a % 3) {
    case 1:
        System.out.println(1);
        break;
    case 2:
        System.out.println(2);
        break;
    default:
        System.out.println(3);
}

💡 break 문이 없으면 다음 case로 "fall through" 하니 주의!

04-2 반복문: for, while, do-while

구문 설명
for (초기식; 조건; 증감) 반복 횟수가 정해졌을 때
while (조건) 조건이 참일 동안 반복
do { ... } while (조건); 최소 한 번은 실행 후 조건 검사
  • break: 반복문 강제 종료
  • continue: 다음 반복으로 건너뜀
for (int i = 0; i < 5; i++) {
    if (i == 3) continue;
    System.out.println(i); // 0 1 2 4
}

05. 참조 타입

05-1 참조 타입과 참조 변수

  • 기본 타입: byte, short, char, int, long, float, double, boolean
  • 참조 타입: 배열, 클래스, 인터페이스, 열거형 등
  • 메모리 구조:
    • 메서드 영역: 클래스 정보, static
    • 힙 영역: 객체 저장
    • 스택 영역: 지역 변수 저장
  • 참조 비교: ==은 주소(번지) 비교 → 같은 객체 참조 여부 확인
  • null: 객체가 없음을 의미하며, 이를 통해 NullPointerException 발생 가능

⚠️ null인 참조 변수로 메소드나 필드를 호출하면 예외 발생

05-2 배열

  • 배열 선언: int[] arr;, String[] names;
  • 배열 생성:
int[] arr = {1, 2, 3};
String[] names = new String[3];
  • 배열 길이: arr.length
  • 다차원 배열:
int[][] matrix = new int[2][3];
System.out.println(matrix.length);         // 2
System.out.println(matrix[0].length);      // 3
  • 향상된 for문:
for (int score : arr) {
    System.out.println(score);
}

💡 향상된 for문은 인덱스가 필요 없을 때 간결하게 사용 가능

05-3 열거 타입 (Enum)

  • 선언:
enum Week { MONDAY, TUESDAY, ..., SUNDAY }
  • 사용:
Week today = Week.FRIDAY;
System.out.println(today);
  • 특징:
    • 타입 안정성 제공
    • 코드 가독성 향상

열거형은 switch문과 함께 자주 사용됩니다.

 

 

기본 숙제 

 
p.142 직접 해보는 손코딩 실행 후 결과 화면 캡쳐하기

 
 

추가 숙제 

 
p.223 하단 확인 문제 6번 풀고 정리하기
 

 
 

전체 구조

 
public class Main { public static void main(String[] args) { ... } }
  • Main 클래스는 실행 진입점(main 메서드)을 가지고 있습니다.
  • Scanner를 이용해 사용자 입력을 반복적으로 받아 처리합니다.

주요 변수 설명

 
int studentNum = 0;
 
int[] scores = {0,};
 
Scanner scanner = new Scanner(System.in);
변수명설명
studentNum 학생 수를 저장하는 정수 변수 (초기값: 0)
scores 학생들의 점수를 저장할 정수형 배열 (초기엔 {0}으로 초기화됨)
scanner 사용자 입력을 받기 위한 Scanner 객체
 

메뉴 루프

while(true) {
    System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
    ...
    int a = Integer.parseInt(scanner.nextLine());
  • 무한 루프 (while(true))로 사용자가 5. 종료를 선택할 때까지 계속 실행
  • 사용자에게 메뉴를 보여주고, 숫자(1~5)를 입력 받음 → int a

조건별 분기 처리

1. a == 1 → 학생 수 입력

studentNum = Integer.parseInt(scanner.nextLine());

scores = new int[studentNum];
  • 사용자로부터 학생 수 입력 받아 studentNum에 저장
  • 해당 크기만큼의 scores 배열 새로 생성 → 이전 내용은 초기화됨

2. a == 2 → 점수 입력

for (int i = 0; i < scores.length; i++) {
    System.out.print("scores[" + i + "]> ");
    scores[i] = Integer.parseInt(scanner.nextLine());
}
 
  • 학생 수만큼 반복하며 점수 입력 받음
  • 입력 받은 점수를 scores 배열에 저장

3. a == 3 → 점수 리스트 출력

 
for (int i = 0; i < scores.length; i++) {
    System.out.println("scores[" + i + "]> " + scores[i]);
}
  • scores 배열에 저장된 점수들을 출력함

4. a == 4 → 최고 점수 및 평균 분석


int max = 0;
double avg = 0;

for (int i = 0; i < scores.length; i++) {
    if (max < scores[i]) {
        max = scores[i];
    }
    avg += scores[i];
}
System.out.println("최고 점수: " + max);
System.out.println("평균 점수: " + avg / scores.length);
  • 최고 점수(max)를 0부터 시작해서 갱신
  • 평균(avg)은 합계를 누적해서 마지막에 전체 인원수로 나눔
  • max < scores[i] 조건으로 최댓값 탐색

5. 그 외 (else) → 프로그램 종료

 
System.out.println("프로그램 종료");
break;
  • 1~4 외의 숫자(예: 5)가 입력되면 종료 메시지를 출력하고 while 루프 탈출

'혼공' 카테고리의 다른 글

[혼공자바 4주차] Chapter 07  (4) 2025.07.27
[혼공자바 3주차] Chapter 06  (1) 2025.07.20
[혼공자바 1주차] Chapter 01 ~ 03  (1) 2025.07.01
[혼공컴운 6주차] Chapter 14 ~ 15  (1) 2024.02.06
[혼공컴운 5주차] Chapter 12 ~ 13  (0) 2024.02.01