<목차>
1) 배열
1-1) 개념
1-2) 예제 풀이
2) 다차원 배열
3) eclipse 추가 실습 코드
1) 반복문
1-1) 개념
* 배열
- 자료형의 종류가 아닌 자료형의 집합을 의미
- 고정된 길이를 갖는 연속된 공간(크기가 처음부터 정해져 있으므로 배열의 크기를 늘리거나 줄일 수 없음!!)
- 같은 타입(자료형)의 여러 변수를 하나의 대표적인 변수로 묶음(<-> 클래스 : 다른 타입의 여러 변수를 하나의 대표적인 변수로 묶음)
* 배열 선언 & 초기화
(1) 배열 선언
데이터 타입[] 변수명;
데이터 타입 변수명[];
변수명 = new 데이터 타입[배열 길이];
데이터 타입[] 변수명 = new 데이터 타입[배열 길이];
(2) 배열 선언 & 초기화
// 배열 선언
int[] arr1 = new int[10];
int arr2[] = new int[10];
// 배열의 초기화
int arr3[] = new int[] {0, 1, 2};
int arr4[] = {3, 4, 5};
// 배열 자료형 선언
int[] = arr5;
arr5 = new int[] {6, 7, 8}; // 먼저 선언하면 “new int”를 생략할 수 있음!!
(3) 인덱스
배열은 같은 타입의 값을 저장할 수 있는 방이 존재하며, 각 방마다 번호가 있음(0 ~ n)
* 인덱스 연산자
- 배열 이름에 []를 사용하는 것을 '인덱스 연산자'라고 함
- 인덱스의 기능은 배열 요소가 저장된 메모리 위치를 찾아주는 역할
1-2) 예제 풀이
패키지 chapter06.array
ArrayTest1.class
package chapter06.array;
public class ArrayTest1 {
public static void main(String[] args) {
// 배열 선언 및 초기화
int[] arr1 = new int[5]; // 타입[] 배열명;
int arr2[] = new int[5]; // 타입 배열명[];
int[] arr3 = new int[] {0, 1, 2, 3, 4};
int arr4[] = {0, 1, 2, 3, 4};
// 배열 자료형 선언
int[] arr5;
arr5 = new int[] {6, 7, 8};
/*
// 먼저 선언될 경우 new int[]를 생략할 수 없음
int arr6[];
arr6 = {9, 10, 11};
*/
for (int i = 0; i < arr3.length; i++) {
System.out.print(arr3[i] + " ");
}
System.out.println();
System.out.println("길이: " + arr3.length);
}
}
ArrayTest2.class
package chapter06.array;
public class ArrayTest2 {
public static void main(String[] args) {
// 선언 후 할당
int[] score = new int[5];
score[0] = 88;
score[1] = 99;
score[2] = 70;
score[3] = 55;
score[4] = 100;
// 기억해 둘 것 : length의 경우는 method가 아니라 속성이기 때문에 뒤에 소괄호를 붙이지 않는 형태로 사용함!!
for (int i = 0; i < score.length; i++) {
System.out.println((i+1) + "번 학생의 성적: " + score[i]);
}
System.out.println("====================");
// 초기화
int[] score2 = new int[] {1, 2, 3, 4, 5};
for (int i = 0; i < score2.length; i++) {
System.out.println((i+1) + "번 학생의 성적: " + score2[i]);
}
}
}
ArrayTest3.class
package chapter06.array;
public class ArrayTest3 {
public static void main(String[] args) {
// 간편한 초기화
int[] score = {88, 99, 70, 55, 100};
for (int i = 0; i < score.length; i++) {
System.out.println(score[i] + " ");
}
System.out.println();
// 재초기화
score = new int[] {1, 2, 3, 4, 5, 6, 7};
for (int i = 0; i < score.length; i++) {
System.out.println(score[i] + ", ");
}
System.out.println("\n" + score);
}
}
ArrayTest4.class
package chapter06.array;
public class ArrayTest4 {
public static void main(String[] args) {
int[] score = {88, 94, 72, 75, 23};
int sum = 0;
for (int i = 0; i < score.length; i++) {
sum += score[i];
}
System.out.println("총점: " + sum);
System.out.println("평균: " + (float) sum / score.length);
}
}
2) 다차원 배열
* 다차원 배열 : 배열의 논리적 메모리 구조가 2차원 이상의 형태를 보이는 배열
- []의 개수가 차원의 수를 의미
- 평면이나 공간 개념을 구현하는데 사용
int[][] arr = new int[5][5];
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();
}
/*
출력 결과:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
*/
패키지 chapter06.array
TwoDimensionTest1.class
package chapter06.array;
public class TwoDimensionTest1 {
public static void main(String[] args) {
int[][] score = {
{77, 56, 70, 82},
{99, 96, 89, 88},
{81, 69, 62, 80}
};
for (int student = 0; student < score.length; student++) {
System.out.print((student+1) + "번 학생의 성적");
for (int subject = 0; subject < score[0].length; subject++) {
System.out.print(score[student][subject] + " ");
}
System.out.println();
}
}
}
TwoDimensionTest2.class
package chapter06.array;
public class TwoDimensionTest2 {
public static void main(String[] args) {
int[][] score = {
{77, 56, 70, 82},
{99, 96, 89, 88},
{81, 69, 62, 80}
};
// st = student / sj = subject
int classSum = 0;
for (int st = 0; st < score.length; st++) {
int sum = 0;
for (int sj = 0; sj < score[0].length; sj++) {
sum += score[st][sj];
}
System.out.println((st+1) + "번 총점: " + sum
+ ", 평균: " + (float) sum / score[0].length);
classSum += sum;
}
System.out.println("학급 전체 평균: " + (float) classSum / (score.length * score[0].length));
}
}
TwoDimensionTest3.class
package chapter06.array;
public class TwoDimensionTest3 {
public static void main(String[] args) {
int[][] score = {
{77, 56, 70, 82, 95, 96, 98, 82},
{99, 96},
{81, 69, 62, 80, 77}
};
for (int st = 0; st < score.length; st++) {
System.out.print((st+1) + "번 학생 성적: ");
for (int sj = 0; sj < score[st].length; sj++) {
System.out.print(score[st][sj] + " ");
}
System.out.println();
}
}
}
3) eclipse 추가 실습 코드
패키지 chapter06.array
Array_Example01.class
package chapter06.array;
import java.util.Scanner;
public class Array_Example01 {
public static void main(String[] args) {
/*
Original : 10 20 30 40 50 60 70 80 90 100
변경하고 싶은 위치1을 입력하세요
1
변경하고 싶은 위치2를 입력하세요
10
New : 100 20 30 40 50 60 70 80 90 10
*/
Scanner scan = new Scanner(System.in);
int[] original = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
System.out.print("Original: ");
for (int i = 0; i < original.length; i++) {
System.out.print(original[i] + " ");
}
System.out.println();
System.out.println("변경하고 싶은 위치1을 입력하세요");
int num1 = scan.nextInt();
System.out.println("변경하고 싶은 위치2를 입력하세요");
int num2 = scan.nextInt();
int temp;
temp = original[num1 - 1];
original[num1 - 1] = original[num2 - 1];
original[num2 - 1] = temp;
System.out.print("Change: ");
for (int i = 0; i < original.length; i++) {
System.out.print(original[i] + " ");
}
}
}
Array_Example02.class
package chapter06.array;
import java.util.Scanner;
public class Array_Example02 {
public static void main(String[] args) {
/*
문제
원소 개수를 입력받아 배열을 생성하고 각 원소의 값을 입력받아 저장한 후,
전체 원소의 합계를 구하여 출력한다.
조건
배열 원소 개수는 2 이상의 정수로 입력받는다.
2 미만의 값이 입력되면 오류 메시지를 출력하고 다시 입력받는다.
출력 결과
배열의 크기 : 5
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
1 + 2 + 3 + 4 + 5 = 15
*/
Scanner scan = new Scanner(System.in);
System.out.print("배열의 크기 : ");
int arrSize = scan.nextInt();
while (arrSize < 2) {
System.out.println("배열의 크기를 2 이상으로 다시 입력해주세요!");
System.out.print("배열의 크기 : ");
arrSize = scan.nextInt();
}
int num; // 입력값
int resultArr[] = new int[arrSize]; // 입력값으로 구성된 배열
int sum = 0; // 입력값들의 합
for (int i = 0; i < arrSize; i++) {
System.out.print("arr[" + i + "] = ");
num = scan.nextInt();
resultArr[i] = num;
if (i == (arrSize - 1)) {
for (int j = 0; j < resultArr.length; j++) {
if (j < resultArr.length - 1) {
System.out.print(resultArr[j] + " + ");
sum += resultArr[j];
} else {
sum += resultArr[j];
System.out.print(resultArr[j] + " = " + sum);
}
}
}
}
}
}
'Java' 카테고리의 다른 글
Java(9) - 메소드 오버로딩, 클래스와 인스턴스, 생성자, static (0) | 2024.04.22 |
---|---|
Java(8) - 배열, foreach 문, 메서드, 로또 생성기 (0) | 2024.04.19 |
Java(6) - 반복문(for 문) 예제 풀이 (0) | 2024.04.17 |
Java(5) - 반복문(while 문, do-while 문, for 문) (0) | 2024.04.16 |
Java(4) - 조건문(switch-case 문), 반복문(for 문) (0) | 2024.04.15 |