1. 학습목표
배열의 활용에 대해 이해할 수 있다.
책에 있는 배열파트 예제를 모두 다루어보겠다.
2.필요 개념 문장정리
- [예제5- 5] 총합과 평균 - 배열의 모든 요소를 더해서 총합과 평균을 구한다.
- [예제5- 6] 최대값과 최소값 - 배열의 요소중에서 제일 큰 값과 제일 작은 값을 찾는다.
- [예제5-7,8]섞기(shuffle) - 배열의 요소의 순서를 반복해서 바꾼다. (카드섞기, 로또번호생성)
- [예제5- 9]임의 값으로 배열채우기 - 연속 또는 불연속적인 값들로 배열을 초기화한다.
- [예제5- 10] 정렬하기(Sort) - 오름차순, 내림차순으로배열을정렬
- [예제5- 11] 빈도수구하기 - 배열에어떤값이몇개저장되어있는지세어서보여준다.
3. 코드작성
class ArrayEx5 {
public static void main(String[] args) {
int sum = 0; //총점을 저장하기 위한 변수
float average = 0f; // 평균을 저장하기 위한 변수
int[] score = (100, 88, 100, 100, 90};
for(int i = 0; 1 < score.length; i++) {
sum += score[i]; //반복문을 이용해서 배열에 저장되어 있는 값들을 모두 더한다.
}
average= sum / (froat)score.length; // 계산결과를 float로 얻기 위해서 형변환
System.out.println ( "총점 : " + sum);
System.out.println ( "평균 : " + average);
실행결과
총점: 478
평균: 95.6
평균을 구하기위해 전체합을 배열의 길이인 score.length로 float형변환 후 나누었다.
class ArrayEx6 {
public static void main(String[] args){
int[] score = {179, 88, 91, 33, 100, 55, 95};
int max = score [0]; // 배열의 첫 번째 값으로 최대값을 초기화한다.
int min = score [0]; // 배열의 첫 번째 값으로 최소값을 초기화한다.
for(int i = 1; i < score.length; i++) {
if(score [i] > max) {
max = score[i];
}else if(score[i] < min) {
min = score[i];
}
} //end of for
System.out.printin("최대값 :" + max);
System.out.printin("최소값 :" +min);
} // end of main
} //end of class
실행결과
최대값 : 100
최소값 : 3
배열에 저장된 값 중에서 최대값과 최소값을 구하는 예제이다.
class ArrayEx7 {
public static void main(String[] args) {
int[] numArr = new int [10];
for (int i = 0; i < numArr.length; i++) {
numArr[i]= i; // 배열을 0~9의 숫자로 초기화한다.
System.out.print(numArr[i]);
}
System.out.println();
for(int = 0; i < 100; i++) {
int n = (int) (Math.random() * 10); // 0~9중의한값을임의로얻는다.
int tmp = numArr[0];
numArr[0] = numArr[n];
numArr[n]= tmp;
}
for (int i=10; i < numArr.length; i++){
System.out.print(numArr[i]);
}
}
}
「실행결과
0123456789
5827164930
class AaryrEx8 {
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 temp = 0; // 두값을 바꾸는데 사용할 임시변수
int j = 0; // 임의의 값을 얻어서 저장할 변수
//배열의 1번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞는다.
// 0번째부터 5번째 요소까지 모두 6개만 바꾼다.
for(int = 0; i < 6; i++){
j = (int) (Math.random() * 45); // 0 ~ 44 범위의 임의의 값을 얻는다 .
temp = ball[i];
ball[i] = ball[j];
ball[j] = temp;
}
// 배열 ball의 앞에서부터 6개의 요소를 출력한다.
for(int i=0; i < 6; i++)
System.out.printf("ball(%d]=%d%n", i, ball[i]);
실행결과
ball[0] = 40
ball[1] = 12
ball[2] = 19
ball[3] = 39
ball[4] = 29
ball[5] = 3
로또 번호를 생성하는 예제이다. 길이가45인 배열에 1부터45까지의 값을 담은 다음 반복문을 이용해서 배열의 인덱스 가 i인 값 (ball[ i ] )과 random( )에 의해서 결정된 임의의 위치에 있는 값과 자리를 바꾸는것을 6번 반복한다. 이것은 마치 1부터 45까지의 번호가 쓰인 카드를 잘 섞은 다음 맨 위의 6장을 꺼내는것과 같다고 할 수 있다.
import java.util.*; //Arrays.tostring()을 사용하기 위해 추가
class ArrayEx9 {
public static void main(String[] args) {
int[] code = {-4, 1 , 3 ,6 , 11}; // 불연속적인 값들로 구성된 배열
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int tmp = (int)(Math.random() * code.length);
arr[i] = code[tmp];
}
System.out.println(Arrays.tostring(arr)) ;
} / / main의끝
}
실행결과
[-4, -4, - 1 , 1 , 3 , 6 , 3 , 3 , 11 , 3 ] - 실행할 때 마다 달라진다.
class ArrayEx10 {
public static void main (String[]args){
int[] numArr = new int[10];
for(int i=0; 1 < numArr.length; i++){
System. out.print(numArr[i] = (int))Math.random() * 10));
}
System.out.println();
for(int i=0; 1 < numArr.length-1; i++) {
boolean changed = false; // 자리바꿈이발생했는지를체크한다.
for(int j=0; j < numArr.length-1-i; j++) (
if(numArr[j] >numArr[j+1]){ //옆의값이작으면서로바꾼다.
int temp = numArr[j];
numArr[j] =numArr[j+1]:
numAr [j+=1] temp;
changed = true; // 자리바꿈이 발생했으니 changed를 true로.
} // end for j
if (!changed) break; // 자리바꿈이 없으면 반복문을 벗어난다.
for (int k = 0; k < numArr.length; k++)
System.out.print(numArr[k]); / / 정렬된 결과를 출력한다.
System.out.println();
}
실행결과
1342134438
1321344348
1213343448
1123334448
class ArrayEx11 {
public static void main(String[] args){
int[] numArr = new int[10];
int[] counter = new int[10];
for (int i=0; i < numArr.length; i++) {
numArr[i] = (int)(Math.random() * 10); // 0 ~ 9의 임의의 수를 배열에 저장
System.out.print(numarr[i]);
}
System.out.println();
for(int i = 0; i < numArr.length; i++) {
counter[numArr[i]]++;
}
for(int i = 0; i < numArr.length; i++) {
System.out.println(i + "의 개수 :" + counter[i]);
}
}
}
실행결과
4446579753
0의 개수 :0
1의 개수 :0
2의 개수 :0
3의 개수 :1
4의 개수 :3
5의 개수 :2
6의 개수 :1
7의 개수 :2
8의 개수 :0
9의 개수 :1
배열 counter에서 배열numArr에 저장된 값과 일치하는 인덱스의 요소에 저장된 값을 1 증가시킨다. numArr(0)에 4 가 저 장되어있으므로 배열 counter의 인덱스가 4인 요소에 저장된 값이 0에서 1로 증가 되었다. 이 과정이 반복되고 나면 배열 co unter의 각 요소에는 해당 인덱스의 값이 몇 번 나타났는지 알 수 있는 값이 저장된다.
4. 마무리
배열의 길이를 활용하여 배열을 수를 변화시키는 것을 이해할 수 있었다.
'언어 기초 > JAVA' 카테고리의 다른 글
[자바의정석 | Chapter 05 배열] 다차원배열 예제 18~23 (0) | 2024.01.11 |
---|---|
[자바의정석 | Chapter 05 배열] String배열 예제12~15 (0) | 2024.01.11 |
[자바의정석 | Chapter 05 배열] 배열 예제3,4 (1) | 2024.01.06 |
[자바의정석 | Chapter 05 배열] 배열 예제1,2 (1) | 2024.01.05 |
[자바의정석 | Chapter 04 조건문과 반복문] while,do-while문 (0) | 2024.01.04 |