- 2차원 배열

값이 행과 열로 구성된 배열을 의미한다.

데이터타입[][] 배열이름 = new 데이터타입 [행갯수][열갯수];
int[][] arr = new int[2][3];

 

- 선언 및 할당

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

 

 


2차원 배열 사용해보기!

 

public class Array2 {
    public static void main(String[] args) {
        // 배열 선언
        int[][] arr= {{10,20,30}, {40,50,60}};

        // 2중 for문으로 출력
        for(int i =0; i < arr.length; i++) {
            for(int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

위 코드의 결과


 

✔️ 향상된 for문

for(변수 : 배열) {
	배열의 요소 갯수만큼 반복할 문장;
    ...
}

 

 


for문 사용해보기!

public class UpgradeFor {
    public static void main(String[] args) {
        // 문자열 배열 선언
        String[] str = {
                "김사과",
                "반하나",
                "두리안",
                "이레몬",
        };
        
        
        // for문으로 출력
        for(int i = 0; i < str.length; i++) {
            System.out.println(str[i]);
        }
        System.out.println();
        
        // 향상된 for문으로 출력

        for(String s : str) {
            System.out.println(s);
        }
    }
}

위 코드의 결과

 


- String 클래스

자바의 문자열을 저장하고 다룰 수 있는 클래스를 의미한다.

String 클래스는 불변 객체이다! (지워지지 않음)

 

// String 클래스가 없을 경우
char[] ch ={'안','녕','하','세','요'};

// String 클래스
String str = new String("안녕하세요");

// 자바는 리터럴 표기법이라고 아래와 같은 문장을 쓸수 있게 해줌.
String str = "안녕하세요";

 

 

- String 클래스 메소드

메소드 기능
concat() 문자열과 문자열 연결
indexOf() 원하는 문자열을 찾아서 해당하는 문자열의 index를 반환
fromIndex라는 매개변수는 "시작점"을 의미한다.
trim() 문자열의 앞 뒤 공백을 제거
toLowerCase() , toUpperCase() 소문자로변환, 대문자로 변환
length() 문자열의 길이 반환
subString() 원하는 문자를 추출
Integer.parseInt() 문자열을 숫자로 바꿈

 

 


String 클래스 메소드 사용해보기!

 

public class String1 {
    public static void main(String[] args) {
        // String 클래스 출력
        String str1 = new String("Hello");
        String str2 = new String("Java");

        System.out.println(str1);
        System.out.println(str2);
        System.out.println("------------------------------------------");

        // String method
        // concat : 문자열과 문자열 연결
        System.out.println(str1.concat(str2));
        String temp = str1.concat(str2);
        System.out.println(temp);

        System.out.println(str1 + str2);
        System.out.println("------------------------------------------");

        // indexOf() : 원하는 문자열을 찾아서 해당하는 문자열의 index를 반환
        System.out.println(str2.indexOf("J")); // 0
        System.out.println(str2.indexOf("j")); // -1
        System.out.println(str2.indexOf("a",2)); // 3
        // fromIndex : 시작점 의미
        System.out.println("------------------------------------------");

        // trim() : 문자열의 앞 뒤 공백을 제거
        String str3 = "            안녕 자바!          ";
        System.out.println("🙌"+str3+"🙌");
        System.out.println("🙌"+str3.trim()+"🙌");
        System.out.println("------------------------------------------");


        //toLowerCase() : 소문자로 변환, toUpperCase() : 대문자로 변환
        System.out.println(str2.toLowerCase());
        System.out.println(str2.toUpperCase());
        System.out.println("------------------------------------------");

        // length() : 문자열의 길이 반환
        System.out.println(str2.length()); // Java
        System.out.println("------------------------------------------");

        // subString() : 원하는 문자를 추출
        String str4 = "Java Python C++";
        System.out.println(str4.substring(3));
        System.out.println(str4.substring(3,7));
        System.out.println("------------------------------------------");

        // 문자열을 숫자로 변환
        // parseInt : 문자열 -> 숫자
        String str5 = "100";
        int i = 200;
        System.out.println(str5 + i);
        System.out.println(Integer.parseInt(str5) + i);
        System.out.println("------------------------------------------");
    }
}

위 코드의 결과_1
concat() 사용 결과
indexOf() 사용 결과
trim() 사용 결과
toLowerCase(), toUpperCase() 사용 결과
length(), subString() 사용 결과
parseInt 사용결과

 

 


과제. 주민 번호 검증 프로그램

1. 각 자리에 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5를 곱하고 모두 더하기
(단, 주민등록번호의 마지막 자리는 제외)

 2. 1번에서 나온 값에서 11로 나눈 나머지 값을 구함

 3. 11에서 "2번의 결과"를 뺀 값을 구함'
 11 - 3 = 8
 (단, 3번의 결과가 2자리(10이상)인 경우 10으로 나눈 나머지 값을 구함)

 4. 3번의 결과값과 주민등록번호 마지막 자리와 일치하면 유효한 주민등록번호임

 주민등록번호를 입력하세요.
 유효한 주민등록번호 입니다.
 유효하지 않은 주민등록번호입니다.

 

import java.util.Scanner;

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

        System.out.println("주민등록번호를 입력하세요. (-제외)");
        String id = sc.next();
        int[] calcNum = {2,3,4,5,6,7,8,9,2,3,4,5};
        int[] idNum = new int[12];
        int rest = 0;
        int result  = 0;
        int vaildNum = Integer.parseInt(id.substring(12,13));
        String calcID = id.substring(0, 12);

        for(int i = 0; i < idNum.length; i++) {
            idNum[i] = Integer.parseInt(calcID.substring(i,i+1));
        }

        for(int i =0; i <calcNum.length; i++) {
            rest += calcNum[i] * idNum[i];
        }

        result =  rest % 11;
        result = 11- result;
        if(result >= 10) {
            result = result % 10;
        }

        if(result == vaildNum) {
            System.out.println("유효한 주민등록번호 입니다.");
        } else {
            System.out.println("유효하지 않은 주민등록번호 입니다.");
        }
    }
}

위 코드의 결과

 

복사했습니다!