기타 개발 강의 및 도서/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch5 - 8 ~ 11 [배열의 활용1~4]
소소한나구리
2023. 11. 9. 17:01
728x90
1) 배열의 활용
(1) 총합과 평균 구하기
- 배열의 저장된 값의 합계와 평균을 출력
- 평균은 소수점으로 출력되야하기에 계산되는 변수중 한가지를 float타입으로 형변환을 해야함
public class ex5_2 {
public static void main(String[] args) {
// 총점을 저장하기 위한 변수
int sum = 0;
// 평균을 저장하기 위한 변수
float average = 0;
int[] score = {100,88,100,100,90};
for(int i = 0; i < score.length; i++) {
sum += score[i];
}
// 계산결과를 float로 얻기위함 (소수점자리 출력)
average = sum / (float)score.length;
System.out.println("총점 : "+sum);
System.out.println("평균 : "+average);
}
}
출력값
총점 : 478
평균 : 95.6
(2) 배열의 최대값과 최소값 구하기
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++) {
// 첫번째 값은 이미 저장했기 때문에 2번째 값(score[1])부터 반복문이 시작 하도록 변수 초기화
if(score[i] > max ) {
max = score[i];
// score[i]값이 저장된 max 값보다 크면 max값을 새로운 값으로 초기화
} else if(score[i] < min) {
min = score[i];
}
// score[i]값이 저장된 max 값보다 작으면 min값을 새로운 값으로 초기화
}
System.out.println("최대값 : "+max);
System.out.println("최소값 : "+min);
}
}
출력결과
최대값 : 100
최소값 : 33
배열의 요소를 섞기 (shuffle)
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));
// numArr 변수에 0 ~ 9 까지의 값을 초기화
for (int i = 0; i < 100; i++) {
// 조건식의 값만큼 실행
int n = (int)(Math.random()*10);
// index값 만큼 랜덤한 수를 얻는 변수 생성(0~9)
// 두 요소의 값 바꾸기를 활용하여 배열요소의 순서를 바꿈
// 아래의 방법은 배열의 첫번째 요소를 배열의 무작위 요소와 계속 자리바꿈하여 섞는 방식
int tmp = numArr[0];
// tmp의 값을 배열의 1번째 값으로 저장
numArr[0] = numArr[n];
// 배열 중 랜덤한 값을 배열의 1번째 값으로 저장
numArr[n] = tmp;
// tmp의 값을 배열의 랜덤한 값으로 저장
}
System.out.println(Arrays.toString(numArr));
}
}
출력결과
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[6, 9, 5, 2, 4, 7, 0, 3, 1, 8]
// 더 좋은 방법으로 섞는 방법
// 아래의 방법은 배열의 첫번째 요소부터 순차적으로 배열의 무작위 요소와 계속 자리바꿈하여 섞는 방식
for (int i = 0; i < numArr.length; i++) {
int n = (int)(Math.random()*10);
int tmp = numArr[i];
// tmp의 값을 배열의 i번째 값으로 저장
numArr[i] = numArr[n];
// 배열 중 랜덤한 값을 배열의 i번째 값으로 저장
numArr[n] = tmp;
// tmp의 값을 배열의 랜덤한 값으로 저장
로또번호 구하기(랜덤번호)
import java.util.Arrays;
public class ex5_5 {
public static void main(String[] args) {
int[] ball = new int[45];
// 0 ~ 44의 정수 배열 생성
for(int i = 0; i < ball.length; i++) {
ball[i] = i+1;
// 각 배열의 요소에 1 ~ 45의 값을 저장(index + 1 > 45까지)
}
int tmp = 0;
// 값바꾸기에 필요한 임시 변수
int j = 0;
// 임의의 값을 저장할 변수
// 배열의 i번째(첫번재 순서부터 순차적으로) 변수바꾸기 실행
for(int i = 0; i < 6; i++) {
// index 0번부터 5번 까지 총 6개의 요소만 바꿈
j = (int)(Math.random()*45);
// 0 ~ 44 사이의 랜덤한 값을 변수 j에 저장
tmp = ball[i];
ball[i] = ball[j];
ball[j] = tmp;
// 변수 섞기
System.out.println(Arrays.toString(ball));
// 변수가 섞이는 과정을 출력
}
for(int i = 0; i < 6; i++) {
System.out.printf("ball[%d]=%d%n", i, ball[i]);
}
}
}
출력결과
ball[0]=34
ball[1]=28
ball[2]=3
ball[3]=22
ball[4]=40
ball[5]=25
** 출처 : 남궁성의 정석코딩_자바의정석
728x90