반응형

배열을 어떻게 활용해야 할까?


활용예제 1) 총합과 평균 - 배열의 모든 요소를 더해서 총합과 평균을 구한다.

package ch01;

 

public class Ex5_2 {

 

public static void main(String[] args) {

int sum = 0; // 총합을 저장하기 위한 변수 선언과 초기화

float average = 0f; // 평균을 저장하기 위한 변수 선언과 초기화

 

int[] score = { 100, 88, 100, 100, 90 };

 

for (int i = 0; i < score.length; i++) { // 반복문을 이용해 배열에 저장되어있는 값들을 모두 더한다.

sum += score[i];

}

average = sum / (float) score.length; // 계산결과를 float타입으로 얻기위해 형변환

 

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

System.out.println("평균 : " + average);

 

} // end of main

 

} // end of class

 

[결과]

총합 : 478

평균 : 95.6

 

활용예제 2) 최대값과 최소값 - 배열의 요소 중에서 제일 큰 값과 제일 작은 값을 찾는다.

package ch01;

 

public class Ex5_3 {

 

public static void main(String[] args) {

int score[] = { 79, 88, 91, 33, 100, 55, 95 };

 

int max = score[0]; // 배열의 첫 번째 값으로 최대값을 초기화

int min = score[0]; // 배열의 첫 번째 값으로 최소값을 초기화

 

for (int i = 1; i < score.length; i++) { // 배열의 두번째 요소부터 읽기 위해 변수i 값을 1로 초기화

if (score[i] > max) {

max = score[i];

} else if (score[i] < min) {

min = score[i];

}

} // end of for

System.out.println("최대값 : " + max);

System.out.println("최소값 : " + min);

} // end of main

 

} // end of class

 

  • 배열의 첫 번째 요소 'score[0]'의 값으로 최대값을 의미하는 변수 max 최소값을 의미하는 변수 min을 초기화
  • 반복문을 통해 배열의 두 번째 요소 score[1]부터 max와 비교
  • 만일 배열에 담긴 값이 max에 저장된 값보다 크면 이 값을 max에 저장
  • 배열의 마지막까지 비교하고 나면 max에는 배열에 담긴 값 중 가장 큰 값이 저장

[결과]

최대값 : 100

최소값 : 33

 

활용예제 3) 섞기 - 배열의 요소의 순서를 반복해서 바꾼다. (숫자 섞기, 로또 번호 생성)

package ch01;

 

import java.util.Arrays;

 

public class Ex5_4 {

 

public static void main(String[] args) {

int[] numArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

System.out.println(Arrays.toString(numArr));

 

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

int n = (int)(Math.random() * 10); // 0~9 중의 한 값을 임의로 받는다.

int tmp = numArr[0];

numArr[0] = numArr[n];

numArr[n] = tmp; // numArr[0]과 numArr[n]의 값을 서로 바꾼다.

}

System.out.println(Arrays.toString(numArr));

 

} // end of main

 

} // end of class

 

  • 만약 random()을 통해 얻은 n값이 3이라면 아래와 같다.

 

package ch01;

 

public class Ex5_5 {

 

public static void main(String[] args) {

// 로또 번호 만들기

 

int[] ball = new int[45]; // 45개의 정수값을 저장하기 위한 배열 생성

 

// 배열의 각 요소에 1~45의 값을 저장

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

ball[i] = i + 1; // ball[0]에 1이 저장됨

}

 

int tmp = 0; // 두 값을 바꾸는데 사용할 임시변수지정

int j = 0; // 임의의 값을 얻어서 저장할 변수

 

// 배열의 i번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞는다.

// 0번째 부터 5번째 요소까지 모두 6개만 바꾼다.

 

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

j = (int)(Math.random() * 45); // 0 ~ 44 범위의 임의의 값을 얻는다.

tmp = ball[i];

ball[i] = ball[j];

ball[j] = tmp; // ball[i] 와 ball[j]의 값을 서로 바꾼다.

}

 

// 배열 ball의 앞에서부터 6개의 요소를 출력

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

System.out.printf("ball[%d]=%d%n", i, ball[i]);

}

 

}

 

}

 

반응형

+ Recent posts