[Java] BufferedReader, FileReader를 활용하여 단어장 만들기개발자가 되기까지 (2023.08.16~2024.04.15)/[Basic] Java2023. 10. 16. 00:45
Table of Contents
import java.util.Objects;
public class Word implements Comparable {
//단어, 의미
//정렬 => Comparator 구현 객체
//기존클래스 + Comparable 구현
//정렬(equals 비교하여 정렬)
//어떤값을 기준으로 정렬?
private String word;
private String mean;
public Word() {}
public Word(String word, String mean) {
this.word = word;
this.mean = mean;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public String getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
@Override
public String toString() {
return word + " : " + mean;
}
@Override
public int hashCode() {
return Objects.hash(mean, word);
}
@Override
public boolean equals(Object obj) {
if (this == obj) //주소가 같은지 확인
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())//클래스 정보 확인
return false;
Word other = (Word) obj;
return Objects.equals(word, other.word);
}
@Override
public int compareTo(Object o) {
// 내 클래스의 객체 값과, 매개변수로 들어오는 객체의 값을 비교
// Comparator(이미 완성된 컬렉션에서 앞의 값과 뒤의 값을 비교)
Word word = (Word)o;
return this.word.compareTo(word.word);
//내림차순 결과 앞에 - 부호만 변경.
//return -this.word.compareTo(word.word);
}
}
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class WordManager {
private ArrayList<Word> list = new ArrayList<Word>();
public WordManager() {
add();
}
//메뉴출력
public void printMenu() {
System.out.println("--단어장 프로그램--");
System.out.println("1.단어등록|2.단어검색|3.단어수정\r\n"
+"4.단어출력|5.단어삭제|6.단어파일출력|7.종료");
System.out.println("------------------------");
System.out.println("메뉴선택 > ");
}
//기본단어 등록
public void add() {
list.add(new Word("hola", "안녕"));
list.add(new Word("agua", "물"));
list.add(new Word("gracias", "감사합니다"));
list.add(new Word("tomar", "마시다"));
list.add(new Word("comer", "먹다"));
}
//단어 추가
public void insertWord(Scanner scan) {
System.out.println("단어: ");
String word = scan.next();
System.out.println("의미: ");
String mean = scan.next();
list.add(new Word(word, mean));
}
public void searchWord(Scanner scan) {
System.out.println("검색단어 > ");
String word = scan.next();
for(Word w : list) {
if(w.getWord().equals(word)) {
System.out.println("--검색결과--");
System.out.println(w);
//return;
}
}
System.out.println("검색 단어가 없음.");
}
public void modifyWord(Scanner scan) {
// 단어수정
System.out.println("검색단어 > ");
String word = scan.next();
boolean result = list.remove(new Word(word,null));
if(!result) {
System.out.println("검색 단어 없음.");
return;
}
System.out.println("수정단어 :");
String newWord = scan.next();
System.out.println("수정의미 :");
String newMean = scan.next();
Word w = new Word(newWord,newMean);
list.add(w);
}
public void printWord() {
// 단어출력
System.out.println("--단어장--");
Collections.sort(list);
for(Word w : list) {
System.out.println(w);
}
System.out.println("---------");
}
public void deleteWord(Scanner scan) {
// 단어삭제
System.out.println("삭제단어 > ");
String word = scan.next();
boolean result = list.remove(new Word(word,null));
if(!result) {
System.out.println("검색 단어 없음.");
return;
}
}
public void fileWord() throws IOException {
// 파일출력
FileWriter fs = new FileWriter("word.txt");
BufferedWriter bw = new BufferedWriter(fs);
StringBuffer sb = new StringBuffer();
//.append : 데이터 추가
String data = null;
sb.append("--단어장--");
sb.append("\r\n"); //줄바꿈
Collections.sort(list);
int cnt = 0;
while(cnt < list.size()) {
sb.append(list.get(cnt));
sb.append("\r\n"); //줄바꿈
cnt++;
}
data = sb.toString();
System.out.println(data);
bw.write(data);
bw.close();
fs.close();
}
}
import java.io.IOException;
import java.util.Scanner;
public class WordMain {
public static void main(String[] args) throws IOException {
/* Word package에서 생성한 Word 클래스를 사용하여
* 단어장 프로그램작성
* 1.단어등록|2.단어검색|3.단어수정
* 4.단어출력|5.단어삭제|6.단어파일출력|7.종료
* Word class ArrayList로 구성
* */
Scanner scan = new Scanner(System.in);
WordManager wm = new WordManager();
int menu = -1;
do {
wm.printMenu();
menu = scan.nextInt();
switch(menu) {
case 1: wm.insertWord(scan); break;
case 2: wm.searchWord(scan); break;
case 3: wm.modifyWord(scan); break;
case 4: wm.printWord(); break;
case 5: wm.deleteWord(scan); break;
case 6: wm.fileWord(); break;
case 7: break;
default:
System.out.println("잘못된 입력입니다.");
}
}while(menu != 7);
System.out.println("프로그램을 종료합니다.");
scan.close();
}
}
[Java] BufferedReader, FileReader를 활용하여 단어장 만들기 끝!
[Java] 홍길동의 생년월일과 성별
728x90
@rlozlr :: 얼렁뚱땅 개발자
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!