JX405기_비트/Java
Day02-10 Muti Array 다차원 / Lotto 추첨기 ver 4.0 - 2차원 배열 사용하기
_하루살이_
2023. 1. 15. 15:13
다차원 배열
다차원 배열이란 배열이라는 데이터타입의 공간 여러개를 묶어서
하나의 다른 데이터타입으로 만든 데이터타입니다.
다차원 배열을 만들때에는
차원수만큼 [][] 을 붙여주면 된다.
package day0110;
public class MultiArray {
public static void main(String[] args) {
// int가 4개 모여있는 배열이
// 3개 모여있는 2차원 배열
int[][] intArrays = new int[3][4];
System.out.println("intArrays[0]: " + intArrays[0]);
System.out.println("intArrays[1][2]: " + intArrays[1][2]);
// 다차원 배열의 경우, 몇개의 배열이 모여있는지만 지정할 수도 있고
// 각 배열의 길이는 각각 다르게 만들어줄 수도 있다.
// 이러한 배열을 가변형 배열이라고 한다.
intArrays = new int[4][];
System.out.println("intArrays[0]: " + intArrays[0]);
intArrays[0] = new int[7];
intArrays[1] = new int[6];
intArrays[2] = new int[9];
intArrays[3] = new int[4];
System.out.println("intArrays[1][2]: " + intArrays[1][2]);
}
}
로또 시뮬레이텨
ver4.0
사용자로부터 총 몇게임할지 입력 받은 후에
해당 게임마다 각각 자동/수동 입력을 받아서
알맞게 처리하는 프로그램
2차원 배열 설정하기 userNumbers는 [게임의 갯수][로또 번호 추첨 갯수]의 2차원 배열
int[][] userNumbers = new int[gameSize][ARRAY_LENGTH];
setNumbers(userNumbers);
int[] computerNumbers = new int[ARRAY_LENGTH];
Ex10Lotto03.setAutoNumbers(computerNumbers);
Ex10Lotto03.sort(computerNumbers);
printResult(userNumbers, computerNumbers);
이차원 배열을 받아 i 번째의 배열에
Ex10Lotto03의 setAutoNumbers를 활용해 배열 입력
public static void setNumbers(int[][] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.println((i + 1) + "번째 게임");
String message = "1. 자동 2. 수동";
int userChoice = ScannerUtil.nextInt(SCANNER, message, 1, 2);
if (userChoice == 1) {
Ex10Lotto03.setAutoNumbers(arrays[i]);
} else {
Ex10Lotto03.setManualNumbers(arrays[i]);
}
Ex10Lotto03.sort(arrays[i]);
}
}
출력
public static void printResult(int[][] userNumbers, int[] computerNumbers) {
System.out.print("컴퓨터 숫자: ");
printArray(computerNumbers);
System.out.println();
System.out.println("사용자 숫자");
for (int i = 0; i < userNumbers.length; i++) {
System.out.printf("%d번 게임: ", i + 1);
printArray(userNumbers[i]);
System.out.printf(" - %d개\n", countSame(computerNumbers, userNumbers[i]));
}
}
배열의 값 출력하기
public static void printArray(int[] array) {
System.out.print("[");
for (int i = 0; i < array.length; i++) {
System.out.printf("%2d", array[i]);
if (i < array.length - 1) {
System.out.print(", ");
}
}
System.out.print("]");
}
1차원 배열의 컴퓨터 번호, 사용자 번호를 받아 출력
public static int countSame(int[] computerNumbers, int[] userNumbers) {
int count = 0;
for (int i = 0; i < computerNumbers.length; i++) {
if (Ex10Lotto03.contains(userNumbers, computerNumbers[i])) {
count++;
}
}
return count;
}
전체 코드
package day0110;
import util.ScannerUtil;
import java.util.Scanner;
public class Ex11Lotto04 {
public static final Scanner SCANNER = new Scanner(System.in);
public static final int ARRAY_LENGTH = 6;
public static final int NUMBER_MIN = 1;
public static final int NUMBER_MAX = 45;
public static void main(String[] args) {
String message = "총 몇게임을 하시겠습니까?";
int gameSize = ScannerUtil.nextInt(SCANNER, message);
int[][] userNumbers = new int[gameSize][ARRAY_LENGTH];
setNumbers(userNumbers);
int[] computerNumbers = new int[ARRAY_LENGTH];
Ex10Lotto03.setAutoNumbers(computerNumbers);
Ex10Lotto03.sort(computerNumbers);
printResult(userNumbers, computerNumbers);
}
public static void setNumbers(int[][] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.println((i + 1) + "번째 게임");
String message = "1. 자동 2. 수동";
int userChoice = ScannerUtil.nextInt(SCANNER, message, 1, 2);
if (userChoice == 1) {
Ex10Lotto03.setAutoNumbers(arrays[i]);
} else {
Ex10Lotto03.setManualNumbers(arrays[i]);
}
Ex10Lotto03.sort(arrays[i]);
}
}
public static void printResult(int[][] userNumbers, int[] computerNumbers) {
System.out.print("컴퓨터 숫자: ");
printArray(computerNumbers);
System.out.println();
System.out.println("사용자 숫자");
for (int i = 0; i < userNumbers.length; i++) {
System.out.printf("%d번 게임: ", i + 1);
printArray(userNumbers[i]);
System.out.printf(" - %d개\n", countSame(computerNumbers, userNumbers[i]));
}
}
public static void printArray(int[] array) {
System.out.print("[");
for (int i = 0; i < array.length; i++) {
System.out.printf("%2d", array[i]);
if (i < array.length - 1) {
System.out.print(", ");
}
}
System.out.print("]");
}
public static int countSame(int[] computerNumbers, int[] userNumbers) {
int count = 0;
for (int i = 0; i < computerNumbers.length; i++) {
if (Ex10Lotto03.contains(userNumbers, computerNumbers[i])) {
count++;
}
}
return count;
}
}