핫키워드 : 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);
}
}

'spring_2기[사전캠프]' 카테고리의 다른 글
| [과제]동물 관리 시스템 (0) | 2025.11.26 |
|---|---|
| Spring 2기 8,9일차 [사전캠프] (0) | 2025.11.21 |
| Spring 2기 7일차 [사전캠프] (0) | 2025.11.19 |
| Spring 2기 6일차 [사전캠프] (0) | 2025.11.18 |
| Spring 2기 4일차 [사전캠프] (0) | 2025.11.14 |