JAVA/JAVA1

[java1] #11 - temp(순서 바꾸기/로또 추첨)

yoonddo 2022. 10. 22. 18:28

# temp (순서바꾸기)

int temp = a;

a = b;

b = temp;

1. temp 라는 빈 공간에 a를 넣어준다. --> int temp = a;

2. a가 빠져나온 곳애 b를 넣어준다. --> a = b;

3. b가 빠져나왔기 때문에 빈공간이 되어버린 그곳이 temp이다. --> b = temp;

컴파일 결과
전 : a = 20, b = 10
후 : a = 10, b = 20

배열의 순서 바꾸기

// 3개의 배열 순서 바꾸기
	int []arr = {5, 7, 2};
    for(int n:arr) //n에 arr을 담는다.
    {
    		System.out.println(n);
    }
    System.out.println();
    
    System.out.println("0번과 2번을 교환 후 출력");
    
    int temp1 = arr[0];
    arr[0] = arr[2];
    arr[2] = temp1;
    
    //순서 바꿔서 출력
    for(int n1:arr)
    {
    		System.out.println(n1 + " ");
	}

로또번호 추첨하기

import java.util.Random;

public class LottoTest {

	public static void main(String[] args) {
		
//		추첨기를 만든다.
		int[] lotto = new int[45];
		
//		추첨기에 공을 넣는다.
		for (int i = 0; i < lotto.length; i++) {
			lotto[i] = i + 1;
		}
		
//		섞기전 상태를 출력한다.
		view(lotto);
		System.out.println("\n=========== 섞기전 ===========");
		
//		섞는다.
//		lotto[0]와 lotto[1] ~ lotto[44] 중에서 랜덤한 위치의 값을 선택해서 두 기억장소의 값을 교환한다.
		Random random = new Random();
		for (int i = 0; i < 1000000; i++) {
			int r = random.nextInt(44) + 1;
			int temp = lotto[0];
			lotto[0] = lotto[r];
			lotto[r] = temp;
		}
		
//		섞기후 상태를 출력한다.
		view(lotto);
		System.out.println("\n=========== 섞은후 ===========");
		
//		lotto 배열의 0 ~ 5 번째 인덱스 값이 1등 번호 6번째 인덱스 값은 보너스 번호
		System.out.print("1등 번호: ");
		for (int i = 0; i < 6; i++) {
			if (i > 0) {
				System.out.print(", ");
			}
			System.out.printf("%02d", lotto[i]);
			
//			Thread 클래스의 sleep() 메소드를 이용해서 프로그램을 일정 시간동안 멈춘다.
			try {
				Thread.sleep(2000);		// 시간은 밀리(1/1000)초 단위로 지정한다. => 1초 ==1000
			} catch (InterruptedException e) {
				e.printStackTrace(); //가장 자세한 예외정보를 제공한다.
			}
			
		}
		System.out.printf(" 보너스: %02d\n", lotto[6]);
		
	}

	private static void view(int[] lotto) {
		for (int i = 0; i < lotto.length; i++) {
			System.out.printf("%2d ", lotto[i]);
			if ((i + 1) % 10 == 0) {
				System.out.println(); //로또번호 한줄 바꾸기 => 섞기전과 섞기 후 모두 같은 출력값이 필요하기때문에 메소드를 따로 생성한다.
			}
		}
	}
	
}

결과