
📚 자바 배열(Array) 활용 예제: 학생 점수 계산 및 버블 정렬
안녕하세요! 앞서 배운 자바 배열과 반복문을 실제 프로그램에서 어떻게 사용하는지 두 가지 예제를 통해 자세히 알아볼게요. 이 예제들은 데이터를 저장하고, 순회하며, 정리하는 배열의 강력함을 보여줍니다.
1. 📝 학생 점수 입력 후 평균/최고점 계산
이 프로그램은 사용자에게 학생 수를 입력받고, 각 학생의 점수를 배열에 저장한 다음, 저장된 점수를 바탕으로 평균과 최고 점수를 계산합니다.
🖥️ 자바 코드
Java
import java.util.Scanner;
public class ScoreCalculator {
public static void main(String[] args) {
// Scanner를 이용해 사용자로부터 입력을 받습니다.
Scanner sc = new Scanner(System.in);
System.out.print("학생 수 입력: ");
int n = sc.nextInt();
// 1. 학생 수(n) 크기만큼 정수형(int) 배열을 선언하고 초기화합니다.
int[] scores = new int[n];
int sum = 0; // 점수 합계를 저장할 변수
int max = 0; // 최고 점수를 저장할 변수
// 2. 일반 for 반복문을 사용하여 배열의 모든 칸을 순회하며 점수를 입력받고 계산합니다.
for (int i = 0; i < n; i++) {
System.out.print((i + 1) + "번 학생 점수 입력: ");
scores[i] = sc.nextInt(); // scores 배열의 i번째 칸에 점수 저장
sum += scores[i]; // 합계에 현재 점수를 더함
// 3. 현재 점수가 지금까지의 최고점(max)보다 크면 max를 갱신합니다.
if (scores[i] > max) {
max = scores[i];
}
}
// 평균 계산 (정수 나누기 오류를 피하기 위해 sum을 double로 형 변환)
double avg = (double) sum / n;
System.out.println("평균 점수: " + avg);
System.out.println("최고 점수: " + max);
sc.close();
}
}
💡 실행 예시
학생 수 입력: 3
1번 학생 점수 입력: 80
2번 학생 점수 입력: 90
3번 학생 점수 입력: 70
평균 점수: 80.0
최고 점수: 90
📌 핵심 설명
- 배열 scores: 학생 수만큼의 점수를 순서대로 저장하는 저장 공간 역할을 합니다.
- for 반복문: 배열의 인덱스(칸 번호) $0$부터 $n-1$까지 순회하며 점수를 입력받고, 동시에 합계와 최고점을 한 번에 계산합니다.
2. 🔢 배열 정렬: 버블 정렬 (간단 버전)
버블 정렬은 여러 가지 정렬 방법 중 가장 기본이 되는 정렬입니다. 인접한 두 숫자를 비교해서 큰 숫자를 뒤로 계속 밀어내는 방식이 마치 물속의 거품(Bubble)이 떠오르는 것 같다고 해서 붙여진 이름이에요.
🖥️ 자바 코드
Java
import java.util.Arrays;
public class BubbleSortExample {
public static void main(String[] args) {
int[] numbers = {5, 2, 9, 1, 3};
System.out.println("정렬 전: " + Arrays.toString(numbers));
// **버블 정렬 시작**
// 1. 바깥쪽 for문: 총 몇 번 반복해서 큰 숫자를 끝으로 보낼지 결정합니다. (배열 크기 - 1번)
for (int i = 0; i < numbers.length - 1; i++) {
// 2. 안쪽 for문: 인접한 두 숫자를 비교하고 자리 바꾸기를 수행합니다.
// -i를 해주는 이유는 이미 정렬된 가장 큰 숫자는 다시 비교할 필요가 없기 때문입니다.
for (int j = 0; j < numbers.length - 1 - i; j++) {
// 3. 왼쪽 값(numbers[j])이 오른쪽 값(numbers[j+1])보다 크면 자리를 바꿉니다.
if (numbers[j] > numbers[j + 1]) {
// **자리 바꾸기 (Swap) 과정**
int temp = numbers[j]; // 1. 큰 값을 temp에 잠시 보관
numbers[j] = numbers[j + 1]; // 2. 작은 값을 왼쪽(j)으로 이동
numbers[j + 1] = temp; // 3. 보관했던 큰 값을 오른쪽(j+1)으로 이동
}
}
}
System.out.println("정렬 후: " + Arrays.toString(numbers));
}
}
💡 실행 예시
정렬 전: [5, 2, 9, 1, 3]
정렬 후: [1, 2, 3, 5, 9]
📌 핵심 설명
- 이중 for문: 정렬 알고리즘에서는 배열의 요소를 반복적으로 비교해야 하기 때문에 for문 안에 또 다른 for문을 사용하는 경우가 많습니다.
- 자리 바꾸기 (Swap): 두 변수의 값을 서로 바꾸려면, 반드시 임시 변수(temp)를 사용해야 값이 사라지지 않고 안전하게 바꿀 수 있습니다.
'Java_language' 카테고리의 다른 글
| Scanner 일반변수,배열변수 입력받기 (0) | 2025.11.24 |
|---|---|
| 논리연산자,switch,커피메뉴 예제 (0) | 2025.11.21 |
| 구구단 출력,1부터 100까지 합 계산 (0) | 2025.11.17 |
| 반복문(for, while)과 제어문(break, continue) 쉽게 배우기 (0) | 2025.11.17 |
| 자바 예제: 조건문과 switch 문 활용 (0) | 2025.11.17 |