spring_2기[사전캠프]

Spring 2기 5일차 [사전캠프]

minwoo95 2025. 11. 17. 20:56

핫키워드 : JAVA 배열과 메서드

1.배열

//배열이 무엇인지
//배열의 길이(Array length)와 요소(Array element)를 이해
//인덱스(index)를 활용해서 배열의 요소를 탐색하는 방법 학습
//향상된 반목문 학습
//2차원 배열이 무엇인지 학습



//배열은 비슷한 주제의 데이터들을 하나의 그룹으로 묶어서 표현하는 방법
//모든 자료형의 종류로 배열을 만들수 있습니다.



//길드장으로서 길드원 관리방법 예제
package Array;

public class Array {
    public static void main(String[] args) {
        //모험가 명단을 관리하는법 :
        String name1 = "gygim";
        String name2 = "Steve";
        //...


        //자료형[] 배열변수명 = {"요소1","요소2"};
        //자료형[] 배열변수명 = new 자료형[배열의길이]<-배열선언방법
        String[] adventuresList = {"gygim", "Steve","..."};

        //5개의 정수를 담을수있는 배열을 만들기

        //배열 만들기 1
        int[] arr;//배열변수 선언
        arr = new int[5];//배열 길이 할당 ([][][][][]개의 상자가 만들어진다)
        //arr =  [] [] [] [] []<-이상태

        //배열 만들기 2
        //배열 선언과 길이를 동시에 할당
        int[] arr1 = new int[5];//배열 변수 선언과 동시에 길이를 할당
        //arr1 = [] [] [] [] [] <-빈공간

        //배열 만들기 3
        //배열 선언과 동시에 배열의 요소 할당
        int[] arr2 = {10,20,30,40,50}; //[10] [20] [30] [40] [50]
        //arr2 = [10][20][30][40][50]<-배열과 동시에 요소를 할당 빈공간 아님

        //배열의 길이 = 몇개의 요소를 넣을지 결정하는것

        //배열의 길이 구하는법
        int arrLength = arr.length;
        System.out.println("arrLength : " + arrLength);

        //[정적배열]
        //int[] arr = [int형][int형][int형][int형][int형];<-총 20바이트의 공간을 점유한방법
        //한번 선언한 정적배열은 길이를 변경할수 없다

        //문자열 배열 선언
        String[] strArr = new String[2];//<-[String 형][String 형][String 형][String 형][String 형]
        //ex) ["문자"]["문자"]["문자"]["문자"]["문자"]

        //논리형 배열 선언
        boolean[] boolreanArr = new boolean[3];//<-[boolean형][boolean형][boolean형] ex)[ture][false][false]

        //배열안에 들어있는 각각의 값을 배열의 요소라고 합니다.
        //배열 선언과 동시에 배열의 요소를 설정 할 수도 있습니다.
        //[1번째요소][2번째요소][3번째요소][4번째요소][5번째요소]

        //배열의 요소에 접근하는 방법은 index 활용
        //index 의 시작은 0 입니다
        //[0 index][1 index][2 index][3 index][4 index]
        //[1번째요소][2번째요소][3번째요소][4번째요소][5번째요소]

        int[] arr3 = {10,20,30,40,50};
        System.out.println("배열의 1번째 요소 접근 : " + arr3[0]);
        System.out.println("배열의 2번째 요소 접근 : " + arr3[1]);
        System.out.println("배열의 3번째 요소 접근 : " + arr3[2]);
        System.out.println("배열의 4번째 요소 접근 : " + arr3[3]);
        System.out.println("배열의 5번째 요소 접근 : " + arr3[4]);
        //인덱스 번호는 =  n-1 (접근하고 하는 n번째 요소)
        //요소에 접근이 가능하여, 요소의 내용을 수정할수 있다

        arr3[0] = 100;//1번째 요소 내용 10->100으로 수정
        arr3[1] = 200;
        arr3[2] = 300;
        arr3[3] = 400;
        arr3[4] = 500;

        for(int t=1;t<=arr3.length;t++){
            System.out.println("배열의 "+t+"번째 요소 접근 : " + arr3[(t-1)]);
        }

        //System.out.println(arr3[5]); //아래 설명확인하기, [해당 에러때문에 아래 예제가 실행안됨 주석처리함]
        //인덱스 5는 없는값이고 실제 인덱스 4까지 요소가 저장되어 있음으로 실행시 예외 에러가 발생
        //ArrayIndexOutOfBoundsException라는 에러 발생
        //요소는 5번째 까지 있는데, 인덱스 5를 넣었더니, 아무 값이 없는 6번째에 접근하고 있다는 에러

        //[나만의 궁금증]만약 배열길이를 6으로 선언하고 요소를 저장하지 않은 빈공간 이여도 에러가 발생할까?
        int[] arr4;//배열변수 선언
        arr4 = new int[6];//배열 길이 할당 ([][][][][]개의 상자가 만들어진다)
        System.out.println(arr4[5]);//출력시 0으로 출력

        //위에 내가 활용한 for문은 인덱스 번호보다 n번째에 포커스를 둔 for문이였다면
        //아래 예제는 인덱스 번호에 포커스를 둔 for문
        int arr5[]={100,200,300,400,500};
        for(int j=0;j<arr5.length;j++){
            System.out.println("인덱스 "+j+"의 값 : " + arr5[(j)]);
        }
        //최종적으로 for문을 돌아가는 j에 <= 입력시 5가 되고 인덱스 5는 빈값으로 에러가 발생[문제]
        //<=가 아닌 <만 으로 조건을 수정하여 4까지 접근하고 for문이 종료되도록 설정[해결]


        //현업에서는 향상된 for문을 현업에서 많이 활용한다!!!
        //for(int a : arr) ->배열arr에서 하나꺼내서 a에 저장
        //IndexOutOfBoundsException 에러가 발생하지 않는다

        /*
        for(배열의 요소 : 배열){
            명령문;
        }
        */

        int[] arr6={100,200,300,400,500};
        //for(arr6의 1번째 요소를 int a에 가져온다) 1번째 부터 5번째 까지 요소를 모두 가져오고 for 자동종료
        for(int a : arr6){
            System.out.println("배열의 각 1번째부터 순서대로의 요소 : " + a);//(가져온 n번째 a요소를 출력한다)
        }


        //2차원 배열
        //자료형[][] 2차원배열 변수명 = new boolean[행][열]; 행과 열로 이루어진 바둑판으로 생각
        //boolean[][] board = new boolean[2][2]; //5x5 2차원 배열 선언
        //아래는 [2]은 행에 해당 되는 내용을 표현
        //[2]은 열에 해당되는 내용을 표현
        //[2][2]
        //[2]
        //[2]
        //최종 모습은 아래
        //[][]
        //[][]
        //요소의 위치값은
        //[00][01]
        //[10][11]
        boolean[][] board ={
                {true, false},
                {false, true}
        };
        System.out.println(board[0][0]);
        System.out.println(board[0][1]);


        //실습과제
        //짝수만 출력하세요.
        int[] arr7 = {3,4,7,10,15,20};
        for(int k=0;k<arr7.length;k++){
            k++;
            System.out.println(arr7[k]);
        }


    }

}

 

2.메서드

package Method;

import java.util.Scanner;

public class main {
    public static void main(String[] args) {
        //1.객체를 객체화(소환)
        Calculator calculator = new Calculator();
        //new는-> Calculator()를 객채화 한다라는 의미
        //calculator<-변수
        //Calculator<-변수형

        //정수형 a  상자에 = 정수를 담은것
        int a = 1;

        //계산기를 담을 상자의 변수형은 계산기
        //[계산기] 계산기 = 계산기

        //2.메서드(함수)를 호출
        int result = calculator.sum(1,2);
        //()안에 매개변수는 해당 메서드에 정의된 매겨변수대로 입력해야한다.
        //calculator메서드는 정수형으로 되어있기에, 문자형이나 다른형이 들어가면 에러발생
        //int result = calculator.sum(1,2);는 반환된 결과값을 정수형 result 변수에 저장
        //리턴된 반환값을 받을때 자료형에 맞춰 자료형을 설정해주어야한다.
        //메서드 내에 존재하는 result는 메서느 안에서만 존재하며 기능수행 끝나면 초기화된다
        //메서드 밖에서 result는 생존할수 없고,
        //만약 메서드 내에 result가 있고 메인에 result가 있다면 이름은 같으나,
        //전혀 관련 없는 변수이름 이다
        System.out.println(result);

        //반환값이 없을때 void
        //3.반환값이 없는 void
        calculator.sum1(1,2);
        //리턴값이 없고 해당 메서드 안에서 결과를 출력하고 종료되는경우
        //메서드에서 리턴할 자료형이 없음으로 [int result =] 삭제


    }
}

package Method;

public class Calculator {



    //메서드 선언 - 두 수 를 더합니다.

    //반환자료형[int] 메서드이름[sum] 매개변수(int value1, int value2)
    //메서드 이름은 작업을 유추하기 쉬운 이름으로 작성하기
    //메서드 이름은 카멜케이스로 작성하기
    //작업내용
    //{int result = value1 + value2;
    //        return result;}<-result는 반환값
    int sum(int value1, int value2) {
        int result = value1 + value2;
        return result;
    };

    //리턴값이 없고 해당 메서드 안에서 결과를 출력하고 종료되는경우
    //리턴할 자료형이 없음으로 void 선언
    void sum1(int value1, int value2) {
        int result = value1 + value2;
        System.out.println("결과는 : "+result);
    };
}
//메서드 - 모듈화의 시작

//---------------내가 정리한 내용--------------------
//public[접근 제한자]    어디서든 접근 가능하다는 뜻. 프로그램이 실행될 때 자바가 접근할 수 있어야 하므로 public을 붙임.
//class[클래스 정의] 자바 프로그램의 기본 단위(모든 코드는 클래스 안에 존재해야 함).
//Main[클래스 이름]  파일 이름과 같아야 함 (Main.java → Main 클래스).
//static[정적 메서드]    객체를 만들지 않고 바로 실행할 수 있도록 함. 프로그램 시작점이라 필요함.
//void[반환형] “아무 값도 리턴하지 않는다”는 뜻. (예: int면 숫자 반환, String이면 문자열 반환)
//main[메서드 이름]  프로그램이 실행될 때 가장 먼저 호출되는 메서드 이름. 반드시 이 이름이어야 함.
//(String[] args)   매개변수   실행 시 전달받을 문자열 배열. 콘솔에서 인자를 받을 때 사용됨. 대부분은 그냥 놔둬도 됨.

//자바는 “모든 실행은 main 메서드에서 시작한다.”
//그리고 main 메서드가 “객체 생성 없이 바로 실행되려면” → public static void main(...)이 꼭 필요하다.


//------------아래부터 수업내용-------------------
//커피를 마시는 적업을 표현한다면
//커피를 마시기()
//{
//1.컵을 준비한다;
//2.컵에 커피를 따른다;
//3.컵에 담긴 커피를 마신다;
//}

package Method;

public class MethodModules {
    public static void main(String[] args){
        //기능 1 : 더하기
        int a = 10;
        int b = 2;
        int result = a +b;
        System.out.println("더하기결과: "+ result);

        //기능 2: 빼기
        int c = 2;
        int d = 1;
        int result1 = c -d;
        System.out.println("더하기결과: "+ result1);


        //메서드는 항상 클래스 내부에 존재
        //public class 클래스이름 {
        //      [반환자료형] [메서드이름] (매개변수..){
        //          작업 명령문들...
        //      }
        // }

        //메서드(함수,기능)는 호출부와 선언부로 나누어집니다
        //호출부 - 메서드를 사용하는곳
        //선언부 - 메서드가 정의되어 있는곳
        //호출부 매개변수를 활용하여 메서드 연산에 필요한 데이터를 전달할수 있습니다.
        //매게변수는 여러개를 만들수있다.




    }
}

 

3.반복문 퀘스트

package Task;

public class loopQuest1 {
    public static void main(String[] args) {
        //반복문 연습하기 1 - 1부터 100까지 출력하세요
        for(int j=1;j<=100;j++){
            System.out.println(j);
        }
        //반복문 연습하기 2 - 짝수만 출력하세요
        for(int j=1;j<=100;j++){
            j++;
            System.out.println(j);
        }
        //반복문 연습하기 3 - 2단부터 9단까지 출력하세요
        for(int j=2;j<=9;j++){
            System.out.println(j+"단");
            for(int t=1;t<=9;t++){
                System.out.println(j+"x"+t+"="+(j*t));
            }

        }
    }
}

 

 

4.배열 퀘스트

package Task;
import java.util.ArrayList;


public class ArrayQuest1 {
    public static void main(String[] args) {
      //목표
      //배열(Array) 선언과 사용
      // ArrayList 동적 배열 활용
      //배열 데이터 처리 알고리즘
      //필수 구현 기능:
      // 숫자 배열 생성
      // 정수 배열에 10개의 숫자 저장 (1~100 사이 임의 값)
      // 통계 계산
      // 배열에서 최대값, 최소값 찾기
      // 평균값 계산
      // 짝수 필터링
      // ArrayList 사용하여 짝수만 별도 저장

                // TODO: 10개 숫자로 배열 초기화
                int[] numbers = {23, 45, 12, 78, 34, 56, 89, 67, 91, 28};

                // TODO: 최대값, 최소값 찾기
                int max = numbers[0];
                int min = numbers[0];
                int sum = 0;

                for (int i = 0; i < numbers.length; i++) {
                    // 최대값, 최소값, 합계 계산 코드 작성
                    int a = numbers[i];
                    if (a > max) {
                        max = numbers[i];
                    }

                    int b = numbers[i];
                    if (b < min) {
                        min = numbers[i];
                    }

                    sum+=numbers[i];


                }

                // TODO: 평균 계산
                double average = (double) sum / numbers.length;

                // TODO: 짝수만 ArrayList에 저장
                ArrayList<Integer> evenNumbers = new ArrayList<>();
                //import java.util.ArrayList; 를 추가하지않아서 에러가 발생[문제]
                //새로운 메서드 사용시 필히 import내용 확인하기[해결]
                for (int num : numbers) {
                    // 짝수 판별 및 추가 코드 작성
                    if(num % 2==0){
                        evenNumbers.add(num);
                    }
                }

                // TODO: 결과 출력
                System.out.println("=== 숫자 관리 프로그램 ===");
                // 출력 코드 작성
                System.out.println("최대값 : " + max);
                System.out.println("최소값 : " + min);
                System.out.println("평균값 : " + average);
                System.out.println("짝수목록 : " + evenNumbers);




    }
}