JAVA 프로그래밍

문제

파일에 저장된 맵을 출력하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 
--------- 파일 mazemap1.txt의 내용 --------- 
111111111
120010003
111010111
100010001
101111101
100000001
111111111
--------- 파일 mazemap2.txt의 내용 --------- 
1111111111111111111111111
1200000516000000170000001
1000000010000000100000001
1000000010000000100000001
1111011111115111111181111
0000000000000000000000043
1111711111119111111161111
1000000410000000100000001
1000000010000000100000001
1000000010000008190000001
1111111111111111111111111
--------- 파일 mazemap3.txt의 내용 --------- 
00000000000000000000000000000000000000000000000000000000
20000000000000000000000000000004000000000000000000000000
11111111100000000000000000011111100000000000000000000000
00000000000000000000000000000000000000000000000000000003
00000000111110000011111111110000000111111111100001111111
40000000000000000000000000000000000000000000000000040000
11111111100011111111111111111111111110000000111111111000
파일이름을 입력하세요: C:\Users\user\Downloads\mazemap1.txt

파일이름을 입력하세요: C:\Users\user\Downloads\mazemap2.txt

파일이름을 입력하세요: C:\Users\user\Downloads\mazemap3.txt

알고리즘

프로그램 시작 
   파일에서 맵 읽기
      맵 파일 열기
      맵 파일에서 한 줄씩 읽기
      맵 파일 닫기
   맵 출력
프로그램 종료

프로그램 코드

	// 파일명 : ./Chapter16/MazeMapFile.java
	import java.io.*;
	import java.util.Scanner;
		 
	public class MazeMapFile
	{
		// 프로그램 시작  
1		public static void main( String[] args ) throws IOException {
			Scanner scan = new Scanner( System.in );
			// 파일에서 맵 읽기  
			// 맵 파일 열기  
			System.out.print( "파일이름을 입력하세요: " );
2			String filename = scan.next();
3			BufferedReader inFile = new BufferedReader( new FileReader( new File( filename ) ) );
			 
			// 맵 파일에서 한 줄씩 읽기 
			int[][]  map = new int[100][100];
			int height = 0, width = 0;
5			for( String line = ""; ( line = inFile.readLine() ) != null; height++ ) {
6				if ( line.length() < 3 ) {
7					break;
				}
8				else {
					for( width = 0; ( width < line.length() ) && ( '0' <= line.charAt(width) ) && ( line.charAt(width) <= '9' ); width++ )
						map[height][width] = line.charAt(width) - '0';
9				}
			}
			 
			// 맵 파일 닫기 
10			inFile.close();
			 
			// 맵 출력 
			String[] symbol = { "  ", " \033[44m   \033[0m", "옷", " \033[34m문 \033[0m", " \033[31m♥ \033[0m", " \033[33m★ \033[0m", " \033[32m♣ \033[0m", " \033[31m♠ \033[0m", " \033[36m◆ \033[0m", " \033[35m■ \033[0m" };
			for( int row = 0; row < height; row++ ) {
				for( int column = 0; column < width; column++ )
					System.out.print( symbol[ map[row][column] ] );
				System.out.println();
			}
			scan.close();
		// 프로그램 종료  
11		}
	}

실행 순서

 
 					※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다