배열
- 동일한 자료형의 데이터를 여러 개 저장하는 공간 (기존에 멤버변수는 한 가지 데이터만 사용 가능했으며, 이러한 불편함을 해결하는 방법)
- 연속적인 공간을 할당받아 인덱스 값을 통하여 순차적 접근이 가능
1. 참조형 변수 선언 (선언 방식은 2가지 이지만, 첫 번째 방식을 주로 사용)
- null은 잠초형 변수의 디폴트 값이다
1. 자료형 [] 변수명;
int[] arr;
2. 자료형 변수명[];
int arr[];
2. 인스턴스 공간 선언
- 모든 인스턴스 공간은 new를 통해 선언된다
1. new 자료형[개수];
new int[5];
2. new 자료형[] {데이터, 데이터, ...);
new int[] {1, 2, 3, 4, 5};
3. 선언과 동시에 초기화
1. 자료형[] 변수명 = new 자료형[개수];
int[] arr = new int[5];
2. 자료형[] 변수명 = {문자열 데이터};
String[] arrayStr = {"a", "b", "c", "d", "e"};
4. 호출
- 배열의 요소 공간을 불러오는 작업이며, 이는 인덱스 값을 통해 호출 가능
- 초기화한 배열은 기본적으로 for문을 통해 사용을 한다
변수명[인덱스]
arr[0]
public class TestMySelf {
public static void main(String[] args) {
String a = "a";
int b = 1;
// [1]
// - array 배열 >> [ 0,1,2,3,4,5,6,7,8,9 ]
// - 변수 i의 시작은 0이고 array 변수의 길이만큼(10개)의 수(인덱스)를 출력
int[] array = new int[10]; // array 변수에 0~9 까지의 수를 담고 있음
for(int i = 0; i < array.length; i++) {
// for(int i = 1; i < array.length; i+=2) { // array에 저장된 10개의 수를 i에 넣어 원하는 숫자를 출력하는 방법
// for(int i = 2; i < array.length; i+=4) {
System.out.println(i);
}
// [2]
// - array2 배열에 1,3,5,7,9 라는 선별적인 데이터를 저장
// - 배열의 길이만큼 인덱스 출력
// int[] array2 = {1,3,5,7,9};
// for(int i = 0; i < array2.length; i++) {
// System.out.println(i);
// }
// [3]
// - array3 배열에 저장한 데이터를 출력
// int[] array3 = {1,3,5,7,9};
// for(int i = 0; i < array3.length; i++) { // i라는 변수를 0부터 array3 배열 길이만큼 1씩 증가
//// for(int i = 0; i < array3.length; i+=2) { // i라는 변수를 0부터 array3 배열 길이만큼 2씩 증가
// System.out.println(array3[i]); // array3에 0부터 배열 길이만큼 1씩 증가한 인덱스에 있는 데이터를 출력
// }
// [4]
// - arrayStr 배열에 문자열 a,b,c,d,e 저장 및 출력
// String[] arrayStr = {"a", "b", "c", "d", "e"};
// for(int i = 0; i < arrayStr.length; i++) {
// System.out.print(i + "번 인덱스의 데이터 : ");
// System.out.println(arrayStr[i]);
//// System.out.println(i + "번 인덱스의 데이터 : " + arrayStr[i]);
// }
}
}
문제 (3개)
주사위를 10번 던진 결과를 저장하려고 합니다
배열을 이용하여 저장을 구현하시고 아래의 결과를 출력하세요
[1] 전체 주사위 기록을 출력
(예) 1번째 : 5 , 2번째 : 2, ...
[2] 짝수 주사위 기록을 출력
[3] 주사위 값들의 합계 출력
선택장애 치료 프로그램
1. 사용자에게 항목 개수를 입력받기
2. 그 만큼의 항목을 입력받아서 배열에 저장
3. 위 두가지가 완료되면 무작위로 1가지를 추첨하여 화면에 출력
(예)
항목 갯수 입력 : 5
항목 : 김밥
항목 : 라면
항목 : 떡볶이
항목 : 자장면
항목 : 순대국
추첨중입니다....
추첨된 항목은 떡볶이 입니다
주사위를 1000번 던져서 각각의 눈금이 나온 횟수를 세보려고 합니다
아래와 같이 결과가 나올 수 있도록 배열을 이용한 적절한 코드를 구현
(예)
'1' 이 나온 횟수 : 170번
'2' 이 나온 횟수 : 180번
'3' 이 나온 횟수 : 205번
...
'6' 이 나온 횟수 : 155번
답
int[] arr = new int[10]; // 10개의 데이터를 저장하는 배열
//[1]
// for(int i = 1; i < arr.length + 1; i++) { // 1번째 ~ 10번째까지 하나씩 호출
// arr[i] = (int)(Math.random() * 6) + 1; // 주사위 랜덤 숫자
// System.out.println(i + "번째 \t: " + arr[i]);
// }
//[2]
// for(int i = 0; i < arr.length; i++) {
// arr[i] = (int)(Math.random() * 6) + 1;
//
// if(arr[i] % 2 == 0) { // 주사위가 짝수 일 때
// System.out.println(i + 1 + "번째 \t: " + arr[i]);
// }
// }
//[3]
int sum = 0;
for(int i = 1; i < arr.length + 1; i++) { // 1부터 10까지 하나씩 호출
int dice = (int)(Math.random() * 6) + 1;
System.out.println(i + "번째 \t: " + dice);
sum += dice; // sum에 dice를 누적하여 합산
}
System.out.println("주사위 총합 : " + sum);
}
}
Scanner sc = new Scanner(System.in);
System.out.print("옵션 메뉴 개수 : "); // 메뉴 개수 받기
int su = sc.nextInt();
String[] menu = new String[su]; // 메뉴 개수만큼 배열 길이 설정
sc.nextLine(); // 문자열 입력 받아 버퍼에 저장하는 코드
for(int i = 0; i < menu.length; i++) { // 메뉴 입력받아 저장
System.out.print("옵션 메뉴 : ");
menu[i] = sc.nextLine();
}
// 임의로 추가한 메소드 (없어도 됨)
System.out.println("추첨중");
for(int i = 0; i < 3; i++) {
Thread.sleep(1000); // 1초 설정, main 메소드에 throws 추가
System.out.println(".");
}
int ran = (int)(Math.random() * su); // su에 저장된 수 안에서만 랜덤 돌리기
System.out.println("추첨된 메뉴는 " + menu[ran] + "입니다");
}
}
int[] arr = new int[6];
for(int i = 0; i < 1000; i++) { // 1000회 던지기
int dice = (int)(Math.random() * 6); // 주사위 (0부터 5까지)
arr[dice]++;
}
for(int i = 0; i < arr.length; i++) {
System.out.println(i + 1 + " 이(가) 나온 횟수 : " + arr[i] + "번");
}
}
}
코딩을 시작하는 많은 사람들의 1차적으로 느끼는 벽이 '배열' 이다.
나도 어려웠고, 블로그를 쓰면서 다시 돌려봤지만 아직도 어려운 것 같다.
그치만, 뭐 어쩌겠어 그냥 해야지
배열의 경우, 이번 글에서 사용된 '일반 배열' 외에도 '이차원 배열', '다차원 배열' 등이 존재한다.
다음 글엔 다양한 문제들을 통해 배열을 더 깊이 이해하는 시간을 가져보겠다
'IT 언어 > Java' 카테고리의 다른 글
[Java] 객체지향 프로그램(클래스, 객체, 인스턴스) (0) | 2023.12.11 |
---|---|
[Java] 이차원 배열 --*Q/A (0) | 2023.12.11 |
[Java] 반복문 문제 --*Q/A (0) | 2023.12.01 |
[Java] 랜덤 Math.radom() --*Q/A (2) | 2023.11.27 |
[Java] 제어문 (조건문, 선택문, 반복문) --*Q/A (0) | 2023.11.27 |