⚙️ Backend/JAVA

Java 자바 - LinkedHashSet을 이용하여 Bingo게임 만들기

코너(Corner) 2020. 12. 9.
반응형

Java 자바 - LinkedHashSet을 이용하여 Bingo게임 만들기

 

 

빙고 게임판 1~99 까지의 난수 생성하여, 7 x 7 사이즈의 빙고 게임판을 만들기

중복 숫자가 없어야 한다. 

 


HashSet보다 LinkedHashSet을 사용한 이유는 HashSet을 사용하면 여러번 실행하다 보면 숫자가 비슷한 위치에 (일부 정렬되는 모습) 생성되는 사실을 발견했다. 

순서를 보장하지 않고 자체적인 방식에 따라 저장하는 HashSet과는 달리 

LinkedHashSet이 적절하게 쓰였다.


소스 코드

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class BingoGame {

	public static void main(String[] args) {
		// 빙고 게임판 만들기 1~99까지 랜덤하게 나오기
		// 7 X 7

		Set bingo = new LinkedHashSet();
		int[][] board = new int[7][7]; // 빙고판 7*7
		System.out.println("빙고 빙고");

		for (int i = 0; bingo.size() < 49; i++) {
			int num = ((int) (Math.random() * 99) + 1);
			bingo.add(num + "");
		}
		Iterator it = bingo.iterator();

		for (int i = 0; i < board.length; i++) {
			for (int j = 0; j < board[i].length; j++) {
				board[i][j] = Integer.parseInt((String) it.next());
				// string으로 받은 이유는 next()의 반환값이 object이기 때문에 형변환을 통해서
				// 원래의 타입으로 바꿔야한다. 
				// 여러번 실행하다보면 같은 숫자가 비슷한 위치에 나온다는 사실을 발견 
				//	 순서를 보장하지 않고 자체적인 방식에 따라 저장하게 된다.
				// HashSet보다는 LinkedHashSet이 나을듯
//				System.out.print("\t"+board[i][j]+"");
				System.out.print((board[i][j] < 10 ? "  " : " ") + board[i][j]+" ");
				//10의 자리 미만이면 공백 두칸, 10의자리 이상은 한 칸
			}
			System.out.println();
		}

	}

}

 

반응형

'⚙️ Backend > JAVA' 카테고리의 다른 글

JAVA(자바) - 람다식이란?  (0) 2020.12.14
Java 컬렉션 프레임 워크 - Map (1)  (0) 2020.12.10
JAVA - 컬렉션 : TreeSet (트리구조)  (0) 2020.12.09
JAVA 자바 - 컬렉션 : Set  (0) 2020.12.09
JAVA 자바 - 컬렉션 : Vector  (0) 2020.12.08

댓글