본문 바로가기

Java

[Java] 파일 클래스 예제2 (영어 단어장)

728x90

🌥️🌥️🌥️🌥️🌥️ 영어 단어장 🌥️🌥️🌥️🌥️🌥️
print : 지금까지 등록한 영어단어가 출력됩니다.
find : 영어단어를 검색할 수 있습니다.
save : 파일에 저장합니다.
exit : 프로그램을 종료합니다.


Word 클래스

public class Word {
    private String eng;
    private String kor;
    private int lev;
    private String wdate;

    public Word(String eng, String kor, int lev, String wdate) {
        this.eng = eng;
        this.kor = kor;
        this.lev = lev;
        this.wdate = wdate;
    }

    public String getEng() {
        return eng;
    }

    public void setEng(String eng) {
        this.eng = eng;
    }

    public String getKor() {
        return kor;
    }

    public void setKor(String kor) {
        this.kor = kor;
    }

    public int getLev() {
        return lev;
    }

    public void setLev(int lev) {
        this.lev = lev;
    }

    public String getWdate() {
        return wdate;
    }

    public void setWdate(String wdate) {
        this.wdate = wdate;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(eng).append(", ").append(kor).append(", ")
                .append(lev).append(", ").append(wdate);
        return sb.toString();
    }
}

 

메소드 모아놓은 WordController 클래스

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class WordController {
    private ArrayList<Word> list;

    public ArrayList<Word> getList() {
        return list;
    }

    public void setList(ArrayList<Word> list) {
        this.list = list;
    }

    public void insert(String eng) {
        int lev;
        String kor, wdate;
        Word w;

        Scanner sc = new Scanner(System.in);
        System.out.print("뜻을 입력하세요 : ");
        kor = sc.next();
        System.out.print("레벨을 입력하세요 : ");
        lev = sc.nextInt();
        System.out.print("등록일자를 입력하세요 : ");
        wdate = sc.next();

        w = new Word(eng, kor, lev, wdate);
        list.add(w);
    }

    public void list() {
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

    public boolean find() {
        Scanner sc = new Scanner(System.in);
        boolean isFind = false;
        System.out.print("찾는 단어를 입력하세요 : ");
        String find = sc.next();
        for(int i = 0; i < list.size(); i++) {
            if (list.get(i).getEng().equals(find)) {
                System.out.println(list.get(i));
                isFind = true;
            }
        }
        return isFind;
    }

    public void save(String file) {
        try {
            PrintWriter pw = new PrintWriter(new FileOutputStream(file));
            for(Word w : list) {
                pw.println(w);
            }
            System.out.println("저장되었습니다.");
            pw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void read(String file) { // 프로그램 시작 시 file에 저장되어 있는 단어 가져올 메소드
        Scanner sc = null;
        String temp;
        String[] arr;
        Word w;
        try {
            sc = new Scanner(new FileInputStream(file));
            while (sc.hasNextLine()) {
                temp = sc.nextLine(); // 파일 텍스트 한줄씩 temp에 저장
                arr = temp.split(", "); // ", "를 기준으로 나눠서 배열에 저장
                w = new Word(arr[0], arr[1], Integer.parseInt(arr[2]), arr[3]); // Word 타입 객체 생성
                list.add(w); // ArrayList list에 추가
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

실행 클래스

import java.util.ArrayList;
import java.util.Scanner;

public class Main3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        Word w;
        WordController wordController = new WordController();
        wordController.setList(new ArrayList<Word>());

        String file = "wordbook.txt";
        String eng;

        System.out.println("🌥️🌥️🌥️🌥️🌥️ 영어 단어장 🌥️🌥️🌥️🌥️🌥️");
        System.out.println("print : 지금까지 등록한 영어단어가 출력됩니다.");
        System.out.println("find : 영어단어를 검색할 수 있습니다.");
        System.out.println("save : 파일에 저장합니다.");
        System.out.println("exit : 프로그램을 종료합니다.");
        wordController.read(file); // 프로그램 시작 시 file에 저장되어 있는 단어 가져올 메소드

        while (true) {
            System.out.print("영어단어 또는 메뉴를 입력하세요 : ");
            eng = sc.next();
            if(eng.equals("exit")) break;

            switch (eng) {
                case "print" :
                    wordController.list();
                    break;
                case "find" :
                    if (!wordController.find()) {
                        System.out.println("찾는 단어가 없습니다.");
                    }
                    break;
                case "save" :
                    wordController.save(file);
                    break;
                default:
                    wordController.insert(eng);
            }
        }
    }
}

실행결과

 

728x90

'Java' 카테고리의 다른 글

[Java] intelliJ MySql 연동  (0) 2022.04.21
[Java] 중첩 클래스  (0) 2022.04.19
[Java] 파일 클래스(StringBuilder)  (0) 2022.04.18
[Java] 파일 클래스 예제1 (파일 읽어와서 출력하기)  (0) 2022.04.18
[Java] 파일 클래스  (0) 2022.04.18