ARRAY 문제 출제
빙고를 맞추면 숫자가 나오는 판을 만들어봅시다.
2차원 배열에 무작위 값을 1부터 25까지 대입합니다.
1차원 배열에 10개의 값 (1부터 25 사이)을 받습니다.
두 배열을 비교하여 값이 있다면 그 값을 빙고판 표에 나타내고
값이 없다면 *로 나타냅니다.
package test;
import java.util.Scanner;
public class bingo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num[] = new int[25]; // 중복 제거를 위한 1차원 배열 생성
int index = 0;
int bingo[][] = new int[5][5];
int insert[] = new int[10]; // 입력 받을 값
for (int i = 0; i < num.length; i++) {
num[i] = (int) (Math.random() * 25 + 1); // 1차원 배열에 대입
for (int j = 0; j < i; j++) { // 값이 같을 경우
if (num[i] == num[j]) {
i--; // i를 감소시켜 다시 대입
break;
}
}
}
for (int y = 0; y < bingo.length; y++) { // 1차원 배열 2차원 배열에 대입
for (int x = 0; x < bingo[y].length; x++) {
bingo[y][x] = num[index++];
}
}
System.out.println("10번 동안 1~25번 내의 숫자를 입력하세요");
for (int i = 0; i < insert.length; i++) {
insert[i] = in.nextInt();
if (insert[i] > 25 || insert[i] < 0) { // 1에서 25 사이가 아닐 경우
System.out.println("1~25 사이의 숫자가 아닙니다. 다시 입력해주세요");
i--;
}
}
for (int y = 0; y < bingo.length; y++) { // 값을 비교하자
for (int x = 0; x < bingo.length; x++) {
if (star(bingo, insert, y, x)) // 참이면 값이 나오고 거짓이면 "*"가 나오도록
System.out.printf("%3d", bingo[y][x]);
else
System.out.printf("%3c", '*');
}
System.out.println();
}
}
static boolean star(int[][] bingo, int[] insert, int y, int x) { // 2차원 배열과 1차원 배열을 비교해서 참, 거짓으로 분류
for (int i = 0; i < 10; i++) {
if (bingo[y][x] == insert[i])
return true;
}
return false;
}
}
+입력받은 값에 중복이 있는지도 확인하는 것을 추가해보아야겠다.