22.04.20_다차원배열

Saparian·2022년 4월 20일
0

오늘의배움

목록 보기
50/53

기본적인 배열에 []가 더 추가되면 2차원 배열이 된다.
[]의 개수가 추가되는만큼 고차원 배열이 된다.

예시) int[][] score = new int[4][3];
-> 4행 3열의 2차원 배열이 생성된다.

아래 예제는 배열 shipboard에서 '1'이 들어있는 좌표를 맞추면 해당 좌표에 'O' 표시가 되게하는 게임을 나타낸 것이다.

public static void main(String[] args) {
		final int SIZE = 10;
		int x = 0, y = 0;
		
		char[][] board = new char[SIZE][SIZE];
		byte[][] shipBoard = {
				// 1  2  3  4  5  6  7  8  9 
				{  0, 0, 0, 0, 0, 0, 1, 0, 0 },	// 1
				{  1, 1, 1, 1, 0, 0, 1, 0, 0 },	// 2
				{  0, 0, 0, 0, 0, 0, 1, 0, 0 }, // 3
				{  0, 0, 0, 0, 0, 0, 1, 0, 0 }, // 4
				{  0, 0, 0, 0, 0, 0, 0, 0, 0 }, // 5
				{  1, 1, 0, 1, 0, 0, 0, 0, 0 }, // 6
				{  0, 0, 0, 1, 0, 0, 0, 0, 0 }, // 7
				{  0, 0, 0, 1, 0, 0, 0, 0, 0 }, // 8
				{  0, 0, 0, 0, 0, 1, 1, 1, 0 }, // 9
		};
		
		// 1행에 행번호를, 1열에 열번호를 저장한다.
		for(int i=1; i<SIZE; i++)
			board[0][i] = board[i][0] = (char)(i+'0');
		
		Scanner scanner = new Scanner(System.in);
		
		while(true) {
			System.out.printf("좌표를 입력하세요. (종료는 00)>");
			String input = scanner.nextLine();	// 화면에 입력받은 내용을 input에 저장
			
			if(input.length()==2) {	// 두 글자를 입력한 경우
				x = input.charAt(0) - '0';	// 문자를 숫자로 변환
				y = input.charAt(1) - '0';
				
				if(x==0 && y==0)	// x와 y가 모두 0인 경우 종료
					break;
			}
			
			if(input.length()!=2 || x<=0 || x>=SIZE || y<=0 || y>=SIZE) {
				System.out.println("잘못된 입력입니다. 다시 입력해주세요.");
				continue;
			}
			
			// shipBoard[x-1][y-1]의 값이 1이면, 'O'를 board[x][y]에 저장한다.
			board[x][y] = shipBoard[x-1][y-1]==1 ? 'O' : 'X';
			
			// 배열 board의 내용을 화면에 출력한다.
			for(int i=0; i<SIZE; i++)
				System.out.println(board[i]);	// board[i]는 1차원 배열
			System.out.println();
			
		}
	}	// main의 끝

0개의 댓글