package kr.co.swh.lecture.java.example; /* 작성일 : 10. 9 이 름 :20002751 허 석 TV 프로그램을 VideoTape으로 Recording 할때 세부정보를 클래스로 작성하는 코드 */ //InputStreamReader와 BufferedReader클래스 사용을 위한 import문 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Videotape{ private String title = new String(); //제목을 인스턴스 변수로 선언 private String kind = new String(); //종류를 인스턴스 변수로 선언 private String playingtime = new String(); //재생시간을 인스턴스 변수로 선언 private boolean stat; //입력하지 않고 출력을 실행할때 제한을 걸어주기 위한 boolean형 변수 public void intro() throws IOException{ //입력부분에 대한 예외처리로 intro함수 선언 int user; //switch문에서 쓸 변수선언 do{ System.out.println("***********************************************"); //출력 System.out.println("* Video information recording of a TV PROGRAM *"); System.out.println("***********************************************"); System.out.println("* 1. Recoding Insert *"); System.out.println("* 2. Video View *"); System.out.println("* 3. Modify *"); System.out.println("* 4. Exit *"); System.out.println("***********************************************"); System.out.println(); System.out.print("* Select ? "); user = System.in.read(); //int형을 입력받기 위한 부분 System.in.skip(10); //쓰레기값이 자동으로 분기되는 것을 막기위한 skip메소드로 //C언어의 getchar()과 같은 쓰임 user-=48; //아스키코드값을 정수형으로 변환 switch(user){ //switch문에 들어갈 변수는 int형보다 범위가 작은 값만 들어갈 수 있다 case 1: input(); //입력부분 stat=true; //input()을 생략하고 print()를 실행하는 것을 막기위함 break; case 2: print(); //출력부분 break; case 3: modify(); //수정부분 break; default: //1,2,3을 제외한 다른 값을 입력했을때 System.out.println("Select Error.."); break; } }while(user!=4); //4을 입력하면 분기문 종료 } public void input() throws IOException{ //입력부분 //단일String형을 입력받는 부분인 InputStreamReader에 문자하나하나씩을 버퍼에 저장해서 //문자열을 입력받을 수 있도록 하는 BufferedReader클래스를 사용 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println(" What's video recording of a TV ?"); System.out.print(" 1.Title : "); title = br.readLine(); //제목을 입력받는 부분 System.out.println("----------------"); //출력부분 System.out.println(" 2.Kind Select "); System.out.println("----------------"); System.out.println(" 1. Film "); System.out.println(" 2. Comedy "); System.out.println(" 3. Education "); System.out.println(" 4. News "); System.out.println(" 5. Key input "); System.out.println("----------------"); System.out.print(" choose? : "); String input = br.readLine(); //종류를 입력받는 부분 //switch문을 사용하여 int형으로 사용할수도 있으나 다른경우도 if(input.equals("1")) //있다는 것을보여주기 위함 kind = "film"; //film값을 인스턴스 변수에 저장 else if(input.equals("2")) kind = "comedy"; //comedy값을 인스턴스 변수에 저장 else if(input.equals("3")) kind = "education"; //education값을 인스턴스 변수에 저장 else if(input.equals("4")) kind = "news"; //news값을 인스턴스 변수에 저장 else{ System.out.print("Key Input -> "); kind = br.readLine(); //그 외의 다른 값을 입력하는 부분 } System.out.print(" 3.Playing Time : "); playingtime = br.readLine(); //재생시간 입력받는 부분 System.out.print(" Complete ? (y/n): "); String user = br.readLine(); //제대로 입력을 했는지 안했는지를 확인하는 부분 if(user.equalsIgnoreCase("y")) //String클래스의 대소문자를 무시하는 equalsIgnoreCase메소드 사용 System.out.println(" Completed.. "); else{ System.out.println(" Uncompleted.. "); input(); //제대로 입력이 안되었다면 다시 input메소드 호출 } } public void print() throws IOException{ if(stat==false) //input메소드를 이전에 실행안했다면 종료 return; System.out.println("-------------------------"); //출력 System.out.println(" 1.Title : " + title); System.out.println(" 2.Kind : " + kind); System.out.println(" 3.Playing Time : " + playingtime); System.out.println("-------------------------"); } public void modify() throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int user; this.print(); //print메소드를 먼저 호출함으로써 수정할 부분을 고를수 있게 함 System.out.print(" select : "); user = System.in.read(); //수정하고 싶은 데이터를 선택 System.in.skip(10); user-=48; switch(user){ case 1: System.out.print(" Title : "); //제목을 수정하는 부분 title = br.readLine(); break; case 2: System.out.print(" Kind : "); //종류를 수정하는 부분 kind = br.readLine(); break; case 3: System.out.print(" Playing Time : "); //재생시간을 수정하는 부분 playingtime = br.readLine(); break; default: this.modify(); //그 외의 값을 입력할시에 다시 modify메소드 호출 break; } } public static void main(String[] args) throws IOException{ Videotape video = new Videotape(); //외부클래스의 객체를 생성 video.intro(); //외부클래스의 객체로 intro메소드 실행 } }