IT개발및프로그래밍/자바

[자바 기초 #3] 배열과 문자열 - 데이터 관리의 기본

devgodmj 2024. 11. 11. 10:18

들어가기전에!

 

자바 객체 생성의 핵심: new 키워드 이해하기

자바에서 new 키워드란? 객체 생성의 시작점!자바에서 객체를 생성할 때 꼭 등장하는 new 키워드, 객체 지향 언어인 자바에서 new는 매우 중요한 역할을 합니다. new 키워드란?new 키워드는 자바에서

devgodmj.tistory.com

 


1. 배열(Array)이란?

배열(Array)동일한 데이터 타입의 값을 여러 개 저장할 수 있는 자료구조입니다. 예를 들어, 10명의 학생 점수를 저장할 때 배열을 사용하면 하나의 변수로 모든 점수를 관리할 수 있어 편리합니다.

1.1 배열 선언과 초기화

자바에서 배열을 선언하는 기본 문법은 다음과 같습니다.

데이터타입[] 배열이름 = new 데이터타입[크기];

 

예를 들어, 5개의 정수를 저장할 배열을 선언하고 초기화하는 방법은 다음과 같습니다.

int[] scores = new int[5];

 

💡 배열의 인덱스는 0부터 시작하므로 scores[0]이 첫 번째 요소, scores[4]가 마지막 요소입니다.

 

1.2 배열 값 할당 및 접근

배열의 각 요소에 값을 넣고 접근하는 방법은 다음과 같습니다.

scores[0] = 90; // 첫 번째 요소에 90 저장
scores[1] = 85; // 두 번째 요소에 85 저장
System.out.println(scores[0]); // 첫 번째 요소 출력

 

1.3 배열 초기화와 활용 예제

배열을 생성과 동시에 초기화할 수도 있습니다.

int[] numbers = {10, 20, 30, 40, 50};

 

예제: 5명의 학생 점수를 입력받아 평균 점수 구하기

import java.util.Scanner;

public class ArrayExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] scores = new int[5];
        int sum = 0;
        
        for (int i = 0; i < scores.length; i++) {
            System.out.print("학생 " + (i + 1) + "의 점수를 입력하세요: ");
            scores[i] = scanner.nextInt();
            sum += scores[i];
        }
        
        double average = (double) sum / scores.length;
        System.out.println("학생들의 평균 점수: " + average);
        
        scanner.close();
    }
}

 

실행 결과 예시

학생 1의 점수를 입력하세요: 85
학생 2의 점수를 입력하세요: 90
학생 3의 점수를 입력하세요: 78
학생 4의 점수를 입력하세요: 92
학생 5의 점수를 입력하세요: 88
학생들의 평균 점수: 86.6

2. 2차원 배열

2차원 배열은 행과 열로 이루어진 데이터를 저장할 수 있는 구조입니다. 예를 들어, 학생들의 여러 과목 점수를 저장할 때 유용합니다.

2.1 2차원 배열 선언과 초기화

int[][] matrix = new int[3][3];

 

이렇게 선언하면 3x3 크기의 2차원 배열이 생성되며, 각 요소는 matrix[0][0], matrix[0][1] 등으로 접근할 수 있습니다.

2.2 2차원 배열 활용 예제

예제: 3명의 학생, 2과목 점수를 입력받아 총점과 평균 점수 구하기

import java.util.Scanner;

public class TwoDimensionalArrayExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[][] scores = new int[3][2];
        int sum = 0;

        for (int i = 0; i < scores.length; i++) {
            for (int j = 0; j < scores[i].length; j++) {
                System.out.print("학생 " + (i + 1) + "의 과목 " + (j + 1) + " 점수를 입력하세요: ");
                scores[i][j] = scanner.nextInt();
                sum += scores[i][j];
            }
        }

        double average = (double) sum / (scores.length * scores[0].length);
        System.out.println("전체 학생들의 평균 점수: " + average);

        scanner.close();
    }
}

 

실행 결과 예시

학생 1의 과목 1 점수를 입력하세요: 80
학생 1의 과목 2 점수를 입력하세요: 85
학생 2의 과목 1 점수를 입력하세요: 75
학생 2의 과목 2 점수를 입력하세요: 90
학생 3의 과목 1 점수를 입력하세요: 88
학생 3의 과목 2 점수를 입력하세요: 92
전체 학생들의 평균 점수: 85.0

 

3. 문자열(String) 다루기

**문자열(String)**은 문자의 집합으로, 자바에서 문자열을 다루기 위해 String 클래스를 사용합니다. 문자열은 문자 배열과는 다르게 여러 유용한 메서드를 제공합니다.

3.1 문자열 선언과 초기화

문자열을 선언하는 방법은 다음과 같습니다.

String name = "Hello, Java!";

3.2 주요 String 메서드

  • length(): 문자열의 길이를 반환합니다.
  • charAt(index): 특정 인덱스의 문자를 반환합니다.
  • substring(start, end): 문자열의 특정 부분을 잘라냅니다.
  • equals(otherString): 문자열이 동일한지 비교합니다.

예제: 문자열의 각 문자 출력하기

public class StringExample {
    public static void main(String[] args) {
        String message = "Hello, Java!";
        
        System.out.println("문자열 길이: " + message.length());
        for (int i = 0; i < message.length(); i++) {
            System.out.println("문자 " + (i + 1) + ": " + message.charAt(i));
        }
    }
}
문자열 길이: 12
문자 1: H
문자 2: e
문자 3: l
문자 4: l
문자 5: o
문자 6: ,
문자 7:  
문자 8: J
문자 9: a
문자 10: v
문자 11: a
문자 12: !

4. 문자열 조작 예제 - 회문 검사기 만들기

문자열이 앞뒤가 똑같은지 검사하는 회문(Palindrome) 프로그램을 만들어보겠습니다.

*회문: 앞에서부터 읽으나 뒤에서부터 읽으나 동일한 문자열이나 숫자
 - 단어: level, radar, mom, racecar

 - 숫자: 121, 1331, 12321

예제: 회문 검사기

import java.util.Scanner;

public class PalindromeChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("검사할 단어를 입력하세요: ");
        String word = scanner.nextLine();
        
        String reversed = new StringBuilder(word).reverse().toString();
        
        if (word.equals(reversed)) {
            System.out.println("입력한 단어는 회문입니다.");
        } else {
            System.out.println("입력한 단어는 회문이 아닙니다.");
        }
        
        scanner.close();
    }
}

 

실행 결과 예시

검사할 단어를 입력하세요: level
입력한 단어는 회문입니다.