Java 5일차

소윤정·2021년 5월 26일
0

JAVA

목록 보기
4/15

배열(Array)
String 클래스

배열(Array)

  • 변수는 한개의 데이터만 저장할 수 있기 때문에 데이터의 수가 많아지면 그만큼 많은 변수가 필요
  • 동일한 데이터 타입의 변수를 연속적으로 생성

배열의 선언

데이터 타입[] 배열명
ex) int[] arr;

※ 변수 → 데이터타입 변수명;

배열의 메모리 할당

배열명 = new 데이터 타입[요소의 개수];
arr = new int[3];

배열의 초기화

  • 배열은 초기화를 바로 하지 못한다.
  • 변수 → num = 10;
  • 배열 → arr[0] = 10;

오름차순 정렬 알고리즘 연습문제

import java.util.Scanner;

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

        // 80 50 70 100 40
        for(int i = 0; i< arr.length; i++){
            System.out.print((i+1) + "번째 숫자를 입력하세요. ");
            arr[i] = sc.nextInt();
        }

        // 80 50 70 100 40
        // 50 80 70 100 40 
        // 50 80 70 100 40
        // 50 80 70 100 40
        // 40 80 70 100 50 
        
        // i가 1 / j는 2
        // 40 70 80 100 50
        // 40 70 80 100 50 
        // 40 50 80 100 70
        
        // i가 2 / j는 3
        // 40 50 80 100 70 
        // 40 50 70 100 80
        
       // i가 3 / j는 4
       // 40 50 70 80 100 
        int temp = 0;
        for(int i =0; i < arr.length-1; i++){ // 0 1 2 3
            for(int j = i+1; j < arr.length; j++){  // 1 2 3 4
                if(arr[i] > arr[j]){ // 내림차순일때는 arr[i] < arr[j]
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        
        
        for(int i =0; i < arr.length; i++){ // 0 ~ 5
            System.out.println(arr[i] + " ");
        }
    }
}

이차원 배열

  • 값이 행과 열로 구성된 배열

이차원 배열 선언

데이터 타입[][] 배열명 = new 데이터타입[행 요소의 개수][열 요소의 개수];
ex) int[][] num = new int[2][3];

/*
    2차원 배열
 */
public class Array6 {
    public static void main(String[] args) {
        int[][] arr= new int[2][3];
        for(int i = 0; i < arr.length; i++){
            System.out.println("현재 i의 값 : " + i);
            for(int j = 0; j < arr[i].length; j++){ // 0 1 2
                System.out.println("→→→→ 현재 j의 값 : " + j);
                arr[i][j] = (i + 1) * (j + 1); // [0,0] = 1, [0,1] = 2
            }
        }

        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();
        }
    }
}

String 클래스

  • 자바의 문자열을 저장하고 다룰 수 있는 클래스
  1. String 객체명 = new String(저장할 값);
    ex) String str = new String("apple");

  2. String 객체명 = 값;
    ex) String str = "banana";

    ⇒ 둘 중 하나로 문자열을 저장하면 된다.

String 예제

import java.util.Locale;

public class String2 {
    public static void main(String[] args) {
        String str1 = new String("Java");
        System.out.println(str1);
        String str2 = "Programming";
        System.out.println(str2);

        // concat(String str) : 문자열과 문자열을 연결
        System.out.println(str1.concat(str2));

        // indexOf : 원하는 문자(열)를 찾아 해당하는 문자의 index를 리턴
        System.out.println(str2.indexOf('P')); // 0
        System.out.println(str2.indexOf('g')); // 3
        System.out.println(str2.indexOf("gra")); // 3
        System.out.println(str2.indexOf("mimi")); // 찾지 못했을 경우 -1

        // trim() : 문자열의 앞뒤 공백을 제거
        String str3 = new String("       자   바          ");
        System.out.println(str3 + "😁");
        System.out.println(str3.trim() + "😁");

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

        // length() : 문자열의 길이를 반환
        System.out.println(str2.length()); // 11

        // substring() : 원하는 문자열을 추출 (과제와 연관)
        System.out.println(str2.substring(3)); // 문자열의 index 3부터 끝까지 추출하여라
        System.out.println(str2.substring(3,6)); // 문자열의 index 3부터 시작해서 6이 되기 전까지

        // 문자열을 숫자로 변환 (과제와 연관)
        String str4 = "100";
        int i = 200;
        int result = Integer.parseInt(str4) + i; // string -> int
        System.out.println(result); // 300
    }
}

연습문제

/*
    2021년 05월 26일 
    주민 등록번호 유효성 검사 프로그램 만들기
 */
import java.util.Scanner;

public class Homework2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true) {
            System.out.print("주민등록번호 : ");
            String jumin = sc.next(); // 주민등록번호 13자리
            String num2 = "234567892345"; // 12자리

            int a = Integer.parseInt(jumin.substring(0, 1)) * Integer.parseInt(num2.substring(0, 1)); // num2 = 2
            int b = Integer.parseInt(jumin.substring(1, 2)) * Integer.parseInt(num2.substring(1, 2)); // num2 = 3
            int c = Integer.parseInt(jumin.substring(2, 3)) * Integer.parseInt(num2.substring(2, 3)); // num2 =4
            int d = Integer.parseInt(jumin.substring(3, 4)) * Integer.parseInt(num2.substring(3, 4)); // num2 = 5
            int e = Integer.parseInt(jumin.substring(4, 5)) * Integer.parseInt(num2.substring(4, 5)); // num2 = 6
            int f = Integer.parseInt(jumin.substring(5, 6)) * Integer.parseInt(num2.substring(5, 6)); // num2 = 7
            int g = Integer.parseInt(jumin.substring(6, 7)) * Integer.parseInt(num2.substring(6, 7)); // num2 = 8
            int h = Integer.parseInt(jumin.substring(7, 8)) * Integer.parseInt(num2.substring(7, 8)); // num2 = 9
            int i = Integer.parseInt(jumin.substring(8, 9)) * Integer.parseInt(num2.substring(8, 9)); // num2 = 2
            int j = Integer.parseInt(jumin.substring(9, 10)) * Integer.parseInt(num2.substring(9, 10)); // num2 = 3
            int k = Integer.parseInt(jumin.substring(10, 11)) * Integer.parseInt(num2.substring(10, 11));  // num2 = 4
            int l = Integer.parseInt(jumin.substring(11, 12)) * Integer.parseInt(num2.substring(11, 12)); // num2 = 5
            int m = Integer.parseInt(jumin.substring(12, 13)); // 주민번호 맨 뒷자리
            int sum = a + b + c + d + e + f + g + h + i + j + k + l;

            int rest = sum % 11; // 11로 나눈 나머지 값 구하기
            int minus = 11 - rest; // 11에서 뺌
            if (minus > 10) {
                minus = minus % 10;
            }

            if (m == minus) {
                System.out.println("유효한 주민번호 입니다.");
                break;
            } else {
                System.out.println("유효하지 않은 주민번호 입니다.");
            }
        }
    }
}

배운점

혼자서 자바 공부나 파이썬 공부할때 가장 부족했던 파트가 배열이랑 문자열 파트부분 문제를 풀면 꼭 문제를 못풀곤 했던 파트였다,, 내가 생각하기엔 가장 어려운 부분이 이 부분인것같다. 특히 2차원 배열이 나오면 머리속이 하얘지곤 했는데 개념부터 제대로 짚고 넘어가고, 응용 문제를 푸니 그나마 예전보다 개념을 확실히 알고 가는 느낌이다. 그래도 틈틈히 연습문제를 풀면서 개념을 잊어버리지 않게 공부해야겠다.

중요한 부분

  1. 배열, String 파트 꾸준히 공부 하기!

0개의 댓글

관련 채용 정보