국비 Day 07 : Array

29297 단어 Java국비Java

예제

🌟예제1🌟

import java.util.*;
public class Test01 {
	public static void main(String[] args) {
    	// 정수 배열 변수 선언, 초기화
        int[] arr = new int[6];
        // 배열의 길이를 알아내고
        int len = arr.length;
        
        for(int i = 0 ; i < len ; i++) {
        	// 배열에 기억된 데이터를 꺼내서
            int no = arr[i];
            // 출력
            System.out.println(no);
            // 데이터 타입 변수는 Heap에 올라가는 순간 모두 자동 초기화
        }
        
        // String 타입 배열 선언, 초기화
        String[] veg = new String[3];
        // 출력
        for(int i = 0 ; i < veg.length ; i++) {
        	System.out.println(veg[i]);
            // 객체 타입이라 null이 출력된다. 에러 발생은 X
        }
    }
}

🌟예제2🌟

public class Test02 {
	pulic static void main(String[] args) {
    	// 6개의 숫자를 추첨하는 복권 만들기
        int[] lotto = new int[5];
        
        // 번호 중복검사를 하고 빠져나올 수 있게 레이블 작성
        loop:
        for(int i = 0 ; i < lotto.length ; i++) {
        	int num = (int)(Math.random() * (45 - 1 + 1) + 1);
            
            // 중복 숫자가 있으면 회차를 반복
            for(int j = 0 ; j < i ; j++) {
            	int tmp = lotto[j];
                if(num == tmp) {
                	i--;
                    
                    continue loop;
                }
            }
            // 배열에 채워넣기
            lotto[i] = num;
        }
        // 출력 생략
    }
}

🌟예제3🌟

1 ~ 10 사이의 정수를 순서대로 배열에 기억시키고 랜덤하게 섞어서 출력

public class Test03 {
	public static void main(String[] args) {
		// 1 ~ 10을 기억하는 배열을 만든다.
		int[] num = new int[10];
		for(int i = 0 ; i < num.length ; i++) {
			num[i] = i + 1;
		}
		
		// 순서대로 기억시킨걸 출력
		for(int no : num) {
			System.out.print(no + " | ");
		}
		
		// 임의의 숫자 두개의 위치를 랜덤하게 만들어 swapping
		for(int i = 0 ; i < 1000 ; i++) {
			int idx1 = (int)(Math.random() * (9 - 0 + 1) + 0);
			int idx2 = (int)(Math.random() * (9 - 0 + 1) + 0);
			
			// 위치값이 같을 경우 횟수 초기화
			if(idx1 == idx2) {
				i--;
				continue;
			}
			
			// 원래 첫 위치의 데이터를 변수에 기억시키고
			int tmp = num[idx1];
			
			// 두번째 위치의 데이터를 첫번째 위치에 기억시킨다.
			num[idx1] = num[idx2];
			num[idx2] = tmp;
		}
		
		// 최종 결과 출력
		for(int no : num) {
			System.out.print(no + " | ");
		}
	}
}

🌟예제4🌟

정수 10개를 랜덤하게 만들어서 기억하는 배열을 만들고 기억된 정수를 내림차순 정렬해서 다시 기억시키고 배열의 데이터를 출력

public class Test04 {
	public static void main(String[] args) {
		// 배열을 만들고
		int[] num = new int[10];
		
		// 데이터를 채우고
		loop:
		for(int i = 0 ; i < num.length ; i++) {
			int no = (int)(Math.random() * 99 + 1);
			
			// 중복검사
			for(int j = 0 ; j < i ; j++) {
				int soo = num[j];
				
				// 중복되는 경우 숫자 생성을 다시 반복
				if(soo == no) {
					i--;	// 회차 반복
					continue loop;
				}
			}
			
			// 이 행을 실행하는 경우는 중복검사를 통과한 경우
			// 때문에 배열에 저장
			num[i] = no;
		}
		
		// 정렬
		for(int i = 0 ; i < num.length ; i++) {
			// i보다는 1 큰 위치에서 뽑아야함
			for(int j = i + 1 ; j < num.length ; j++) {
				if(num[j] > num[i]) {
					int tmp = num[i];
					num[i] = num[j];
					num[j] = tmp;
				}
			}
		}
		
		// 출력
		for(int no : num) {
			System.out.print(no + " | S");
		}
	}
}

연습문제

👑연습문제1👑

'A' - 'J' 까지의 문자를 랜덤하게 100개를 만들고 각 문자의 출현횟수를 기억할 배열을 만들어서 횟수만큼 '*'로 출력해주는 프로그램을 작성

public class Ex01 {

	public static void main(String[] args) {
		// 배열 만들기 A ~ J는 10개
		int[] count = new int[10];
		
		// 'A' - 'J' 랜덤하게 100개 만들기
		for(int i = 0 ; i < 100 ; i++) {
			int random = (int)(Math.random() * ('J' - 'A' + 1) + 'A');
			int a = (int)'A';
			
			// 횟수를 배열에 저장
			count[random - a] += 1;
		}
		
		// 배열에 저장된 숫자만큼 *을 출력
		for(int i = 0 ; i < count.length ; i++) {
			char ch = (char)('A' + i);
			System.out.print(ch + " [" + count[i] + "] : ");
			
			// *
			for(int j = 0 ; j < count[i] ; j++) {
				System.out.print("*");
			}
			// 한줄 완료 후 줄바꿈
			System.out.println();
		}
	}
}

좋은 웹페이지 즐겨찾기