ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 배열을 이용한 합계/평균, 최대값/최소값, 섞기(Shuffle)
    개발 완료 2020. 3. 27. 23:31
    반응형

    목적

    • Java 배열 "[]"를 이용해서 다양한 코드를 짜본다

     

    1. 시험성적의 총합계 / 평균 구하기

    public class Main {
        public static void main(String[] args) {
    
            int sum = 0;
            float average = 0f;
    
            int[] score = {70, 88, 95, 100, 65};
    
            for (int i = 0; i < score.length; i++) {
                sum += score[i];
            }
            average = sum / (float)score.length;
    
            System.out.println("총합: " + sum);
            System.out.println("평균: " + average);
        }
    }

    결과값

    1. 합계 = int sum, 점수 평균 = float average로 초기화
    2. sum에 score 배열의 요소를 하나하나 가져와서 더함
    3. score 배열의 길은 5이므로, 총 합계에서 5를 나눈다 (소수점까지 나타내기 위해 float 형변환)

     

    2. 배열의 최댓값 / 최솟값 구하기

    public class Main1 {
        public static void main(String[] args) {
            int[] num = {70, 88, 91, 33, 100, 55, 95};
    
            int max = num[0];
            int min = num[0];
    
            for (int i = 1; i < num.length; i++) {
                if(num[i] > max) {
                    max = num[i];
                    System.out.println("Max >>> " + max);
                } else if(num[i] < min) {
                    min = num[i];
                    System.out.println("Min >>> " + min);
                }
            }
            System.out.println("\n" + "Final Max >>> " + max);
            System.out.println("Final Min >>> " + min);
        }
    }

     

    결과값

     

    1. num 배열에 요소들을 저장
    2. num[0] = 70(Max값), num[1] = 88, 즉 88이 max값으로 바뀐다
    3. num[0] = 70, num[2] = 91, 즉 max는 91로 바뀐다
    4. num[0] = 70(Min값), num[3] = 33, 즉 min값이 33으로 바뀐다
    5. 현재 max 값은 91, min 값은 33이다
    6. 배열의 길이만큼 반복 후 결과

     

    중간에 Max, Min값을 모두 출력한 이유는 변하는 과정을 눈으로 쉽게 보기 위함 입니다. 코드에 꼭 필요한 부분은 아닙니다.

     

    3. 섞기(Shuffle)

    package Java_Study;
    
    import java.util.Arrays;
    
    public class Main2 {
        public static void main(String[] args) {
    
            int[] num = {0,1,2,3,4,5,6,7,8,9};
            System.out.println("Original num >>> " + Arrays.toString(num));
            System.out.println();
    
    
            for (int i = 0; i < 100; i++) {
                int n = (int)(Math.random() * 10);
                int tmp = num[0];
                num[0] = num[n];
                num[n] = tmp;
                System.out.println("num >>> " + Arrays.toString(num));
            }
            System.out.println();
            System.out.println("Final num >>> " + Arrays.toString(num));
        }
    }

     

    결과값 (연속)
    최종 결과값

     

    for문을 중점적으로 설명하겠습니다.

    여기서 tmp 변수는 숫자들을 섞기 위해서 잠시 대기 시켜놓는 공간이라고 생각하시면 됩니다.

     

    중간에 print와 toString 메서드는 꼭 필요하지 않지만, 진행과정을 한눈에 보기 쉽게 해줍니다.

     

    1. "int n" 변수에 0 ~ 9까지의 무작위 정수를 입력합니다
    2. "int tmp" 변수에 num 배열의 첫 번째 숫자, 즉 0을 넣습니다
    3. 빈 num[0] 배열에 무작위 정수인 n을 넣습니다. 만약에 num[0] = num[7]이 된다면, 원래의 0이 6로 대체됩니다
    4. tmp에 잠시 대기시켜 놓은 0을 num[7] 배열에 넣습니다
    5. 그래서 첫 번째 결과물을 보면 [6, 1, 2, 3, 4, 5, 0, 7, 8, 9] 입니다. 6과 0의 위치가 바뀐 것을 볼 수 있습니다


    4. 수정 사항

    2020년 12월 16일 - 문장 변경 및 다듬기

     

    5. 출처

    책 '자바의 정석 기초편'

     

     

     

    반응형

    댓글

Designed by Tistory.