나의 영어 사전
실리콘 밸리의 프로그래밍 트렌드에 뒤쳐지지 않기 위해서 영어 공부를 하려고 합니다. 영어 공부를 도와줄 단어장을 만들어 봅시다! Main 클래스만 주어집니다. Main 클래스를 보고 WordDictionary 클래스를 완성시켜 보세요!
대소문자 처리에 유의해주세요. 대소문자와 상관없이 단어를 찾을 수 있어야 합니다.
Main 클래스
public class Main {
public static void main(String[] args) {
WordDictionary dictionary = new WordDictionary();
dictionary.addWord("Movie", "영화");
dictionary.addWord("cat", "고양이");
dictionary.addWord("Dog", "개");
dictionary.addWord("book", "책");
dictionary.addWord("soap", "비누");
dictionary.addWord("Glasses", "안경");
System.out.println(dictionary.find("Book"));
System.out.println(dictionary.find("glasses"));
}
}
결과
책
안경
<해설 및 모범 답안 코드>
설계
먼저 메인 메소드를 보고 WordDictionary 클래스를 설계해 봅시다.
WordDictionary dictionary = new WordDictionary();
dictionary.addWord("Movie", "영화");
...
dictionary.addWord("book", "책");
System.out.println(dictionary.find("Book"));
System.out.println(dictionary.find("glasses"));
생성자는 별다른 파라미터가 없고, 메소드는 addWord(String, String)와 find(String), 이렇게 두 개가 있군요.
public class WordDictionary {
public void addWord(String english, String korean) {
}
public String find(String english) {
}
}
단어저장
이제 그리고 가장 중요한 부분인 단어를 어떻게 저장할지 고민해 봐야 합니다.
역시 메인 메소드를 보니, 영어 단어 하나에 한글 단어 하나를 연결 하네요.
String key하나에 String 원소 하나를 연결 하면 되니, 앞서 배운 HashMap을 사용해 볼까요?
public class WordDictionary {
private HashMap<String, String> words = new HashMap<>();
...
}
메소드 구현
자, 이제 add 메소드를 구현해 봅시다.
public void addWord(String english, String korean) {
words.put(english, korean);
}
파라미터로 받은 값들을 그대로 key와 원소로 사용해서 words에 넣으면 됩니다.
find 메소드도 구현해 봅시다! 두 가지를 고민해야합니다.
하나는 HashMap 탐색, 다른 하나는 대소문자처리 입니다.
HashMap 탐색은 강의에서 보셨던 .keySet() 메소드를 통해서 구현할 수 있었습니다.
public String find(String english) {
for (String key : words.keySet()) {
}
}
그리고 대소문자 구분 없이 검색이 되어야 하는데, String 강의에서 배운 .toLowerCase()메소드를 쓰면 되겠죠!
public String find(String english) {
for (String key : words.keySet()) {
if (key.toLowerCase().equals(english.toLowerCase())) {
return words.get(key);
}
}
return null;
}
중요한 점은 key와 파라미터 english 모두 .toLowerCase() 메소드를 사용해야합니다.
그리고 마지막으로, 탐색에 실패했을 경우 null을 리턴해 주어, 이 메소드가 리턴 없이 끝나지 않도록 합니다.
모범 답안 (WordDictionary.java)
import java.util.HashMap;
public class WordDictionary {
private HashMap<String, String> words = new HashMap<>();
public void addWord(String english, String korean) {
words.put(english, korean);
}
public String find(String english) {
for (String key : words.keySet()) {
if (key.toLowerCase().equals(english.toLowerCase())) {
return words.get(key);
}
}
return null;
}
}
<본인 코드 작성>
'TIL > Java' 카테고리의 다른 글
[Java] main (0) | 2022.01.14 |
---|---|
[Java] break, continue (0) | 2022.01.14 |
[Java] HashMap (0) | 2022.01.11 |
[Java] 김신 장군 살리기 (0) | 2022.01.11 |
[Java] Wrapper Class / Array List (0) | 2022.01.10 |