JAVA 프로그래밍

문제

파일에서 날씨 정보를 추출하고, 그 추출 정보를 바탕으로 날씨 뉴스를 생성하는 문제입니다 이를 해결하는 프로그램의 다음 실행상태에 대해 빈칸을 채우세요 

프로그램의 실행순서 및 실행상태

1  public static void main( String[] args ) throws IOException {

2   String filename = scan.next();
파일이름을 입력하세요: weather1.txt

3   BufferedReader inFile = new BufferedReader( new FileReader( new File( filename ) ) );

5   for( String line; ( line = inFile.readLine() ) != null; ) {

6    int highJeju      = Integer.parseInt( item[16] );
                                                                                        main()
        month           day        week
weatherReport   precaution
     lowSeoul -4  lowChuncheon -4  lowDaejeon -1
   lowGwangju 0      lowBusan 4     lowJeju 4
    highSeoul 1 highChuncheon 3 highDaejeon 2
  highGwangju 2     highBusan 4    highJeju 5
     filename inFile  ↓ 
 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 

7    System.out.println( weatherReport + "가 발효중인 지역에서는 " + precaution + " 운전에 각별히 주의해 주시기 바랍니다.\n" );
1월 15일 목요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 -4도, 춘천 -4도, 대전 -1도, 광주 0도, 부산 4도, 제주 4도입니다.
낮 최고기온은 서울 1도, 춘천 3도, 대전 2도, 광주 2도, 부산 4도, 제주 5도입니다.
대설특보가 발효중인 지역에서는 눈길 운전에 각별히 주의해 주시기 바랍니다.


5   for( String line; ( line = inFile.readLine() ) != null; ) {

6    int highJeju      = Integer.parseInt( item[16] );
                                                                                        main()
        month           day        week
weatherReport   precaution
     lowSeoul 21  lowChuncheon 21  lowDaejeon 23
   lowGwangju 23      lowBusan 22     lowJeju 21
    highSeoul 29 highChuncheon 30 highDaejeon 31
  highGwangju 31     highBusan 26    highJeju 28
     filename inFile  ↓ 
 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 

7    System.out.println( weatherReport + "가 발효중인 지역에서는 " + precaution + " 운전에 각별히 주의해 주시기 바랍니다.\n" );
6월 29일 금요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 21도, 춘천 21도, 대전 23도, 광주 23도, 부산 22도, 제주 21도입니다.
낮 최고기온은 서울 29도, 춘천 30도, 대전 31도, 광주 31도, 부산 26도, 제주 28도입니다.
호우특보가 발효중인 지역에서는 빗길 운전에 각별히 주의해 주시기 바랍니다.


5   for( String line; ( line = inFile.readLine() ) != null; ) {

6    int highJeju      = Integer.parseInt( item[16] );
                                                                                        main()
        month 1           day 3        week
weatherReport 강풍주의보 precaution 안전
     lowSeoul -8 lowChuncheon -14 lowDaejeon -7
   lowGwangju -4     lowBusan -2    lowJeju 2
    highSeoul 2 highChuncheon 2 highDaejeon 4
  highGwangju 7     highBusan 8    highJeju 7
     filename weather1.txt inFile  ↓ 
 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 

7    System.out.println( weatherReport + "가 발효중인 지역에서는 " + precaution + " 운전에 각별히 주의해 주시기 바랍니다.\n" );
1월 3일 목요일 오늘의 날씨입니다.
주요 지역의 아침 최저 기온은 서울 -8도, 춘천 -14도, 대전 -7도, 광주 -4도, 부산 -2도, 제주 2도입니다.
낮 최고기온은 서울 2도, 춘천 2도, 대전 4도, 광주 7도, 부산 8도, 제주 7도입니다.
강풍주의보가 발효중인 지역에서는 안전 운전에 각별히 주의해 주시기 바랍니다.


5   for( String line; ( line = inFile.readLine() ) != null; ) {

8   inFile.close();           
         inFile
                                                                                                

9  }


프로그램 코드

	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		}
	}