JAVA 프로그래밍

문제

파일에서 날씨 정보를 추출하고, 그 추출 정보를 바탕으로 날씨 뉴스를 생성하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 참고로, 날씨 정보는 아래와 같이 '정보 [ 탭 ] 정보 [ 탭 ] 정보 [ 탭 ] ...'의 구조로 저장되어 있습니다. 
--------- 파일 weather1.txt의 내용 --------- 
1	15	목	대설특보	눈길	-4	-4	-1	0	4	4	1	3	2	2	4	5
6	29	금	호우특보	빗길	21	21	23	23	22	21	29	30	31	31	26	28
1	3	목	강풍주의보	안전	-8	-14	-7	-4	-2	2	2	2	4	7	8	7
--------- 파일 weather2.txt의 내용 --------- 
6	29	금	호우특보	빗길	21	21	23	23	22	21	29	30	31	31	26	28
--------- 파일 weather3.txt의 내용 --------- 
1	3	목	강풍주의보	안전	-8	-14	-7	-4	-2	2	2	2	4	7	8	7
파일이름을 입력하세요: C:\Users\user\Downloads\weather1.txt
1월 15일 목요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 -4도, 춘천 -4도, 대전 -1도, 광주 0도, 부산 4도, 제주 4도입니다.
낮 최고기온은 서울 1도, 춘천 3도, 대전 2도, 광주 2도, 부산 4도, 제주 5도입니다.
대설특보가 발효중인 지역에서는 눈길 운전에 각별히 주의해 주시기 바랍니다.
	
6월 29일 금요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 21도, 춘천 21도, 대전 23도, 광주 23도, 부산 22도, 제주 21도입니다.
낮 최고기온은 서울 29도, 춘천 30도, 대전 31도, 광주 31도, 부산 26도, 제주 28도입니다.
호우특보가 발효중인 지역에서는 빗길 운전에 각별히 주의해 주시기 바랍니다.
	
1월 3일 목요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 -8도, 춘천 -14도, 대전 -7도, 광주 -4도, 부산 -2도, 제주 2도입니다.
낮 최고기온은 서울 2도, 춘천 2도, 대전 4도, 광주 7도, 부산 8도, 제주 7도입니다.
강풍주의보가 발효중인 지역에서는 안전 운전에 각별히 주의해 주시기 바랍니다. 

파일이름을 입력하세요: C:\Users\user\Downloads\weather2.txt
6월 29일 금요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 21도, 춘천 21도, 대전 23도, 광주 23도, 부산 22도, 제주 21도입니다.
낮 최고기온은 서울 29도, 춘천 30도, 대전 31도, 광주 31도, 부산 26도, 제주 28도입니다.
호우특보가 발효중인 지역에서는 빗길 운전에 각별히 주의해 주시기 바랍니다. 

파일이름을 입력하세요: C:\Users\user\Downloads\weather3.txt
1월 3일 목요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 -8도, 춘천 -14도, 대전 -7도, 광주 -4도, 부산 -2도, 제주 2도입니다.
낮 최고기온은 서울 2도, 춘천 2도, 대전 4도, 광주 7도, 부산 8도, 제주 7도입니다.
강풍주의보가 발효중인 지역에서는 안전 운전에 각별히 주의해 주시기 바랍니다. 

알고리즘

프로그램 시작 
   날씨 정보 파일 열기
   파일에서 날짜별 날씨 정보를 추출하기
   추출한 정보를 바탕으로 날씨 기사를 자동으로 생성
   날씨 정보 파일 닫기
프로그램 종료

프로그램 코드

	// 파일명 : ./Chapter16/WeatherFile.java
	import java.io.*;
	import java.util.Scanner;
		 
	public class WeatherFile
	{
		// 프로그램 시작 
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 ) ) );
	 
			// 파일에서 날짜별 날씨 정보를 추출하기 
5			for( String line; ( line = inFile.readLine() ) != null; ) {
				String[]  item = line.split("\t");
				if ( item.length < 17 ) {
					System.out.print( "(오류) 날짜별 날씨 정보을 읽어올 수 없습니다." );
					break;
				}
				 
				String month      = item[0];
				String day        = item[1];
				String week       = item[2];
				String weatherReport = item[3];
				String precaution = item[4];
				int lowSeoul      = Integer.parseInt( item[5] );
				int lowChuncheon  = Integer.parseInt( item[6] );
				int lowDaejeon    = Integer.parseInt( item[7] );
				int lowGwangju    = Integer.parseInt( item[8] );
				int lowBusan      = Integer.parseInt( item[9] );
				int lowJeju       = Integer.parseInt( item[10] );
				int highSeoul     = Integer.parseInt( item[11] );
				int highChuncheon = Integer.parseInt( item[12] );
				int highDaejeon   = Integer.parseInt( item[13] );
				int highGwangju   = Integer.parseInt( item[14] );
				int highBusan     = Integer.parseInt( item[15] );
6				int highJeju      = Integer.parseInt( item[16] );
	 
				// 추출한 정보를 바탕으로 날씨 기사를 자동으로 생성 
				System.out.println( month + "월 " + day + "일 " + week + "요일 오늘의 날씨입니다." );
				System.out.println( "주요 지역의 아침 최저 기온은 서울 " + lowSeoul + "도, 춘천 " + lowChuncheon + "도, 대전 " + lowDaejeon + "도, 광주 " + lowGwangju + "도, 부산 " + lowBusan + "도, 제주 " + lowJeju + "도입니다." );
				System.out.println( "낮 최고기온은 서울 " + highSeoul + "도, 춘천 " + highChuncheon + "도, 대전 " + highDaejeon + "도, 광주 " + highGwangju + "도, 부산 " + highBusan + "도, 제주 " + highJeju + "도입니다." );
7				System.out.println( weatherReport + "가 발효중인 지역에서는 " + precaution + " 운전에 각별히 주의해 주시기 바랍니다.\n" );
			}
	 
			// 날씨 정보 파일 닫기 
8			inFile.close();
			scan.close();
		// 프로그램 종료 
9		}
	}

실행 순서

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