[Java 6-4 LottoApp]

임승현·2022년 10월 4일

Java

목록 보기
20/126
package basic;

//1~45 범위의 난수를 6개 제공받아 출력하는 프로그램
//=> 6개 난수는 서로 중복되지 않도록 작성하며 오름차순 정렬하여 출력
//정렬(Sort) : 값을 순서대로 나열하는 기능 - 오름차순 정렬(Ascending Sort),
내림차순 정렬(Descending Sort)

public class LottoApp {
	public static void main(String[] args) {
		//6개의 정수난수를 저장하기 위한 배열 선언
		int[] lotto=new int[6];
		
		//1~45 범위의 정수난수를 6개 제공받아 배열 요소에 차례대로 저장
		//=> 중복된 난수값이 아닌 경우에만 배열 요소에 저장
		for(int i=0;i<lotto.length;i++) {//새로운 난수값을 저장하는 배열 요소의 첨자 표현
			//요소에 저장된 새로운 난수값을 기존 요소의 난수값과 모두 비교하여 같은 값이 있는 경우
			//반복문을 이용하여 새로운 난수값을 제공받아 배열 요소에 저장
			//=> 새로운 난수값이 기존 요소의 난수값과 다른 경우 반복문 종료
			while(true) {//정상적인 값이 입력된 경우 반복문 종료 - 입력값 검증
				//1~45 범위의 난수를 제공받아 배열 요소에 저장
				lotto[i]=(int)(Math.random()*45)+1;
				
				//중복 상태정보를 저장하기 위한 변수
				//=> false : 미중복, true : 중복
				boolean result=false;
				
				//새로운 난수값을 기존 배열 요소의 난수값과 비교
				for(int j=0;j<i;j++) {//기존 난수값이 저장된 배열 요소의 첨자 표현
                	//lotto[i] : 새로운 난수값, lotto[j] : 기존 난수값
					if(lotto[i]==lotto[j]) {
						result=true;
						break;
					}
				}
				//새로운 난수값이 기존 난수값과 비교하여 중복되지 않은 경우 반복문 종료
				if(!result) break;
			}
		}
		//배열의 모든 요소값을 서로 비교하여 오름차순 정렬되도록 배열 요소값을 바꾸어 저장
		//=> 선택 정렬 알고리즘(Selection sorting Algorithm) 사용
		for(int i=0;i<lotto.length-1;i++) {//비교 요소의 첨자 표현 : 처음~끝-1
			for(int j=i+1;j<lotto.length;j++) {//피비교 요소의 첨자 표현 : 비교+1 ~ 끝
				if(lotto[i]>lotto[j]) {//lotto[i] : 비교 요소, lotto[j] : 피비교 요소
					int temp=lotto[i];
					lotto[i]=lotto[j];
					lotto[j]=temp;
				}
			}
		}
		
		
		//배열의 모든 요소값 출력
		System.out.print("행운의 숫자 >> ");
		for(int number:lotto) {
			System.out.print(number+" ");
		}
		System.out.println();
	}
}

0개의 댓글