JAVA

[JAVA] 배열

(งᐛ)ว 2023. 8. 19. 22:01
728x90
728x90

배열 : 같은 자료형의 변수들로 이루어진 유한집합으로 효율적인 데이터 관리가 가능하다.

 

정수형 배열의 선언과 생성 

자료형 [ ] 배열명 = new 자료형 [길이];     //new는 공간을 할당해주는 역할

int [ ] arr = new int[4];     //방4개짜리 배열생성. 변수4개를 만든 것과 같음 (0123)

 

값의 대입

배열명 [index] = 데이터;     //index는 항상 0번부터 시작

for(int i =0; i<4; i++) {    //반복문 사용 

arr[i]=(i+1)*100;     //i번째 인덱스라는 뜻. 배열의 마지막 index 번호는 항상 크기 -1이다. 

}

 

배열 출력

~println(배열명[index]); 

for(int i =0; i<4; i++) {

System.out.println(arr[i]);

}

 

//100

200

300

400

 

**배열의 길이(크기)는 배열명.length 로 표현이 가능하다.

ex) for(int i = 0; i<arr.lengthi++) {

     arr[i]=(i+1)*100;

}

for(int i = 0; i<arr.lengthi++) {

     System.out.println(arr[i]);

}

 

 

**배열의 초기화 : 초기화리스트에 들어있는 요소의 개수만큼 컴파일러가 방을 생성함.

배열 선언과 동시에 초기화. 배열 생성 후에는 초기화리스트로 한번에 넣을 수 없으니 사용한다면 꼭 선언하면서 제시.   

자료형 [ ] 배열명 = {값1, 값2, 값3 ... }


문자형 배열의 선언과 생성 

자료형 [ ] 배열명 = new 자료형 [길이];     //new는 공간을 할당해주는 역할

char [ ] ch = new char[4];     //방4개짜리 배열생성. 변수4개를 만든 것과 같음 (0123)

 

값의 대입

배열명 [index] = 데이터;     //index는 항상 0번부터 시작

ch [0]='j';    //0번째 인덱스

ch [1]='a';    //1번째 인덱스

ch [2]='v';

ch [3]='a';

 

배열 출력

~println(배열명[index]); 

~println(배열명); 

for(int i =0; i<4; i++) {

System.out.println(ch[i]);

}

//java

 

System.out.println(ch);     //문자형 배열은 배열명만으로 출력 가능

//java


다차원배열

 

다차원 배열의 선언과 생성 

자료형 [ ][ ] 배열명 = new 자료형 [1차원배열개수][1차원배열에 들어가는 요소개수];   

int [ ][ ] arr = { {1,2,3}, {4,5,6} };

 

for(int i=0; i<arr.lengthi++) {     //2

     for(int j = 0; j<arr[i].length; j++) {    //3

          System.out.print(arr[i][j]);    //123456

     }

}

 

 

**2차원 배열의 요소로서 들어가는 1차원 배열의 요소개수를 각각 따로 지정할 수 있다.

int [ ][ ] iArr = new int [3][ ];

 

iArr[0] = new int [3];

iArr[1] = new int [2];

iArr[2] = new int [4];

 

int n = 1;

for(int i = 0; i<iArr.length; i++) {

       for(int j = 0; j<iArr[i].length; j++) {

              iArr[i][j] = n++;

              System.out.print(iArr[i][j]+" ");

       }

       System.out.println();

}

 

//123

45

6789


1️⃣ 배열 arr에 담긴 모든 값의 합을 출력하세요 

int [ ] arr = {10,20,30,40,50};

 

int total = 0;

for(int i =0; i<arr.length; i++) {

     total+=arr[i];

}System.out.println(total);

//150

 

 

 

2️⃣ 원하는 배열 크기를 scanner로 입력받고 입력된 값을 배열의 크기로 설정한다. 배열의 크기만큼 알파벳을 출력하세요

 

Scanner sc = new Scanner(System.in);

System.out.print("정수를 입력하세요 : ");

int n = sc.nextInt();

 

char[] ch = new char[n];     //문자형배열 선언과 생성 

char c = 'A';

 

for(int i = 0; i<ni++) {     //i<n대신 i<ch.length도 가능

     ch[i] = c++;     //값의 대입

     System.out.print(ch[i]);    //배열출력 

} 

//정수를 입력하세요 : 5

ABCDE

 

 

 

3️⃣ 정수형 변수 money에 10~5000사이의 난수를 발생시켜 넣는다. 단, 1의자리 숫자는 반드시 0이어야 한다. 

발생된 난수를 500,100,50,10원짜리 동전으로 바꾸면 각 동전이 몇개씩 필요한지 판단하는 코드 작성하기

 

Random rnd = new Random();

int money = rnd.nextInt((500) + 1) * 10;

System.out.println("금액 입력 : "+ money + "원");

 

int[] coin = { 500, 100, 50, 10 }; 

for (int i = 0; i <coin.lengthi++) {

     int result = money / coin[i];

     System.out.printf("%d원 : %d개\n"coin[i], result);

     money %= coin[i];

}

//금액 입력 : 2690원

500원 : 5개

100원 : 1개

50원 : 1개

10원 : 4개

 

 

 

4️⃣ 1~45 사이의 난수를 발생시켜 로또번호 생성하기 (중복되지 않는 6개의 숫자)

 

// 로또번호 담을 배열 만들기

int[ ] lotto = new int[6];

 

// 랜덤값 범위 지정하기 

Random rnd = new Random();

int number = rnd.nextInt(45) + 1;

 

// 로또번호 생성하기

label: for (int i = 0; i < lotto.length;) {

     lotto[i] = rnd.nextInt(45) + 1;

 

// 중복 비교하는부분

     for (int j = 0; j < i; j++) {

          if (lotto[i] == lotto[j]) {

               continue label;

          }

     }

     System.out.print(lotto[i] + " ");

     i++;

}

 

 

 

5️⃣ 2차원 배열에 담긴 모든 요소들의 합과 평균 구하기

int [ ] [ ] arr = { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15},{16,17,18,19,20} };

 

int total = 0;

int count = 0;

 

for(int i = 0; i<arr.length;i++) { //nArr.length는 4임 인덱스갯수

       for(int j = 0; j<arr[i].length; j++) { //nArr[i].length는 각 인덱스에 포함된 요소들의 개수 (다 다를수있음)

              total+=arr[i][j];

              count++; //반복문 돌때 같이 갯수세주기

       }

}

System.out.println("총합 : "+total);

System.out.println("평균 : "+ (float)total/count);

 

//총합 : 210

평균 : 10.5

728x90