관리 메뉴

나구리의 개발공부기록

자바의 정석 기초편 ch5 - 8 ~ 11 [배열의 활용1~4] 본문

유튜브 공부/JAVA의 정석 기초편(유튜브)

자바의 정석 기초편 ch5 - 8 ~ 11 [배열의 활용1~4]

소소한나구리 2023. 11. 9. 17:01

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

 

 

** 출처 : 남궁성의 정석코딩_자바의정석