ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] 배열의 활용
    자바 2022. 7. 1. 10:31
    728x90

    1차원 배열의 활용

    1. 총합과 평균

    class ex{
    	public static void main(String[] args) {
        	int sum = 0;
            float avg = 0f;
            
            int[] score = { 100, 88, 100, 100, 90};
            
            for(int i = 0; i < score.length; i++ ) {
            	sum += score[i]
            }
            
            avg = sum / (float)score.length;
            
            System.out.println("총점: " + sum);
            System.out.println("평균: " + avg);
    	}
    }

    여기서 볼점은, avg가 float 타입이기 때문에 f를 써줬다는 점이랑  평균을 구할때 타입변환 해줬다는 점이다

     

    2. 최대와 최소

    class ex{
    	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 = 0; i < score.length; i++ ) {
            
    		if(score[i] > max) {
    	            	max = score[i];
        	        } else if (score[i] < min ) {
            	    	min = score[i]
                	}
                
            }
            
            System.out.println("최대값: " + max);
            System.out.println("최소값: " + min);
    	}
    }

    여기서 볼점은 배열의 첫번째 값을 최대, 최소로 초기화를 했다는 점이다.

     

    3. 셔플

    class ex{
    	public static void main(String[] args) {
            int[] arr = new int[10];
            
            for(int i = 0; i < arr.length; i++ ) {
    		arr[i] = i; // 배열을 0-9로 초기화
    	        System.out.print(arr[i]); // 순차적으로 배열이 출력된다
            }
            System.out.println();
            
            for(int i = 0; i < arr.length; i++) {
                int n = (int)(Math.random() * 10 ); // 랜덤으로 숫자 생성
                int tmp = arr[i];
                arr[i] = arr[n]
                arr[n] = tmp; // 셔플
            }
            for (int i = 0; i < arr.length; i++ )
            	System.out.println(arr[i]) // 셔플된 배열을 출력
    	}
    }

    여기서 볼점은, 배열에 처음에 중복된 값이 없기때문에, 셔플시에 중복에 대한 걱정을 하지 않아도 된다.

     

    3-1. 셔플로 로또 만들기

    class ex{
    	public static void main(String[] args) {
            int[] ball = new int[45];
             
            for(int i = 0; i < ball.length; i++ ) {
    	        ball[i] = i+1; // 배열을 1-45로 초기화
            }
    
            int temp = 0;
            int j = 0;
            
           for(int i = 0; i < 6; i++) { // 6개만 바꾸는 이유는 로또 번호는 6개이므로
                j = (int)(Math.random() * 45 ); // 랜덤으로 숫자 생성
                temp = ball[i];
                ball[i] = ball[j]
                ball[j] = temp; // 셔플
            }
            for (int i = 0; i < 6; i++ )
                System.out.printf("ball[%d] = %d %n", i, ball[i]); // 셔플된 배열을 출력
        }
    }

     

    4. 임의의 값으로 배열 채우기

    import java.util.*;
    class ex{
       public static void main(String[] args) {
            int[] code = { -4, -4, -1, -1, 3, 6 ,3 ,3, 11, 3};
            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)); // 불연속적인 임의의 값이 나온다
       }
    }

    여기서 볼점은, 0부터 code의 길이만큼 랜덤숫자를 생성하고 code 배열에서 임의로 숫자를 받아서 arr에 복사한다는 점, Arrays.toString(배열) 은 배열의 값이 나오고, Arrays.toString() 은 배열의 주소값이 나온다는 점이다.

     

    5. 빈도수

    class Ex {
    	public static void main(String[] args) {
        	int[] num = new int[10];
        	int[] counter = new int[10];
            
            for(int i =0; i < num.length; i++) {	
                num[i] = (int)(Math.random() * 10);
                System.out.print(num[i]);
    	}
            System.out.println();
            
            for(int i = 0; i < num.length; i++) {
            	counter[arr[i]]++; // 이 부분이 빈도수를 체크해준다 
    	}
            for(int i = 0; i < arr.length; i++ ) {
            	System.out.println( i + "의 개수 :" + counter[i]);
    	}
        }
    }

    여기서는 counter[arr[i]]++; 이 부분만 보면 되는데, 인덱스의 위치를 찾아와서 빈도수를 하나씩 증가 시켜주면된다

     

     

    String 배열의 활용

    1. 16진수 2진수로 바꾸기

    class ex {
    	public static void main(String[] args) {
    	    	char[] hex = { 'C','A','F','E' );
    	    	String[] binary = { "0000", "0001", "0010", "0011",
            					 "0100", "0101", "0110", "0111",
                                  "1100", "1101", "1110", "1111" }
    
    		Sring res= "";
            
    		for(int i = 0; i < hex.length; i++ ) {
                         if(hex[i] >= '0' && hex[i] <= '9' ) {
                	        res += binary[hex[i] - '0' ];
    	             } else { 
        	                res += binary[hex[i] - 'A' + 10 ];
    		    }
                    }
    	        System.out.print;ln("hex : " + new String(hex));
                    System.out.print;ln("binary : " + res);
    	}
    }

    여기서 볼 점은, hex의 범위가 10이상일때와 아닐때 처리하는 방법을 보면 된다

     

    다차원 배열의 활용

    1. 단어 맞추기

    import java.util.*;
    
    class ex {
        public stati void main(String[] args) {
            String[][] words = ( {"chair", "의자" }, // word[0][0], word[0][1]
                {"computer", "컴퓨터"}, // word[1][0], word[1][1]
                {"integer", "정수"} } // word[2][0], word[2][1]
            Scanner scanner = new Scanner(System.in);
            
            for(int i = 0; i < words.length; i++) {
                System.out.printf("Q%d. %s의 뜻은?", i+1, words[i][0] );
                
                String tmp = scanner.nextLine();
                
                if (tmp.equals(words[i][1])) {
                    System.out.printf("정답. %n%n");
                } else {
                    System.out.printf("틀림. 정답은 %s 입니다. %n%n", word[i][1] );
                }
            }
        }
    }

    '자바' 카테고리의 다른 글

    [자바] 객체지향(2) - 1 ( 패키지 )  (0) 2022.07.09
    [자바] 객체지향(1)  (0) 2022.07.07
    [자바] 배열  (0) 2022.06.28
    [자바] JDK1.5 이후 향상된 for문  (0) 2022.06.27
    [자바] 변수  (0) 2022.06.25
Designed by Tistory.