로또 번호 처럼 1-45숫자 중 6개 입력해서 출력하는 코드

최재유·2022년 12월 21일
0
package kakao.wodb.sort;

import java.util.Arrays;
import java.util.Scanner;

public class Main2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		
		//로또 번호 생성기 처럼
		//1-45까지의 숫자 6개를 입력받아서 저장한 후 출력
		//입력을 받을 때 1~45 사이의 숫자가 아니면 다시 입력하도록
		//중복되는 숫자를 입력하면 다시 입력하도록 합니다.
		//데이터를 출력할 때는 정렬을 해서 출력
		
		//숫자 6개를 저장할 공간을 생성
		//중복 검사가 수월하고 정렬을 수행하면서 삽입하는 TreeSet을 이용
		
		//배열을 이용하는 경우
		
		//입력받기 위한 인스턴스 생성
		Scanner sc = new Scanner(System.in);
		//6개의 정수를 저장할 배열을 생성
		int [] lotto = new int[6];
		
		int len = lotto.length;
		for(int i=0; i<len; i++) {
			try {
				System.out.println("로또 번호 입력:");
				lotto[i] = sc.nextInt();
				
				//1부터 45사이의 숫자만 입력받도록 하기
				if(lotto[i] <1 || lotto[i] >45) {
					System.out.println("1-45사이의 숫자만 입력하세요 !!!");
					i--;
					//중복검사를 하지않고 패스하기 위해서 ( 범위가 아닌숫자는 굳이 중복검사를 할필요가 없는거같다.)
					continue;
				}
				//데이터 중복 검사
				//첫번째 부터현재 데이터 앞까지 비교
				
				//중복이 발생했는지 체크하기 위한 변수
				boolean flag = false;
				for(int j=0; j<i; j++) {
					
					//2개의 데이터가 같음
					if(lotto[i] == lotto[j]) {
						//중복되었다고 표시
						flag = true;
						break;
					}
				}
				
				//중복된 경우
				if(flag == true) {
					System.out.println("중복된 숫자 입니다.!!!!");
					i--;
					
					
				}
				
			}catch(Exception e) {
				//이번은 무효 - 인덱스를 뒤로
				i--;
				sc.nextLine();
				System.out.println("숫자를 넣으세요 !!!!");
				
			}
		}
		//배열의 데이터 정렬
		Arrays.sort(lotto);
		//배열의 데이터를 출력
		System.out.println(Arrays.toString(lotto));
		
		
				
	
				
				
				
		//스캐너 정리
		sc.close();
		
		
		
		
		
		
	}

}

set 함수 이용

package kakao.wodb.sort;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class CleanSet {

	public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
		//중복된 데이터를 저장하지 않고 데이터를 정렬해서저장하는
		//자료구조 클래스
		Set<Integer> set = new TreeSet<>();
		//set에 6개의 데이터가 저장되지 않은 경우
		while(set.size() < 6) {
			System.out.println("로또 번호 입력");
			int temp = sc.nextInt();
			if(temp< 1 || temp>45) {
				System.out.println("1부터 45사이의 숫자를 입력하세요");
				continue;
			}
			
			//중복 검사
			boolean result = set.add(temp);
			//삽입에 실패하면 - 중복된 데이터라면
			if(result == false) {
				System.out.println("중복된 숫자를 입력하면 안됩니다.");
			}
		}
		System.out.println(set);
		
		//스캐너 정리
		sc.close();
	}

}

0개의 댓글