[명품 Java] 7장 Open Challenge (영어 단어 테스트 프로그램)
2021. 12. 14. 20:26ㆍSolution`/Java
package OpenChallenge;
import java.util.*;
class Word{
private String eng, kor;
Word(String eng, String kor){
this.eng = eng;
this.kor = kor;
}
String getEng(){
return eng;
}
String getKor(){
return kor;
}
}
public class WordQuiz {
Scanner sc = new Scanner(System.in);
Vector<Word> v = new Vector<Word>();
int[] r_quiz = new int[4];
WordQuiz(){
v.add(new Word("love", "사랑"));
v.add(new Word("animal", "동물"));
v.add(new Word("picture", "그림"));
v.add(new Word("emotion", "감정"));
v.add(new Word("baby", "아기"));
v.add(new Word("error", "오류"));
v.add(new Word("society", "사회"));
v.add(new Word("doll", "인형"));
v.add(new Word("bear", "곰"));
v.add(new Word("example", "보기"));
v.add(new Word("deal", "거래"));
v.add(new Word("photo", "사진"));
v.add(new Word("human", "인간"));
v.add(new Word("statue", "조각상"));
v.add(new Word("eye", "눈"));
v.add(new Word("hand", "손"));
v.add(new Word("ant", "개미"));
v.add(new Word("resume", "이력서"));
v.add(new Word("concern", "걱정"));
v.add(new Word("bad", "나쁜"));
v.add(new Word("developer", "개발자"));
v.add(new Word("word", "단어"));
}
void run(){
System.out.println("\"명품단어\"의 단어 테스트를 시작합니다. -1을 입력하면 종료합니다.");
System.out.println("현재 " + v.size() + "개의 단어가 들어 있습니다.\n");
quiz();
}
void quiz(){
while(true){
make();
int answerNum = (int)(Math.random()*4); // 0 1 2 3중 정답번호 생성
int answerIndex = r_quiz[answerNum]; // v.size() 중 랜덤 정수 4개 저장된 r_quiz에서 정답번호 index 설정
// ex) r_quiz[10, 5, 2, 9], answerNum = 1 -> answerIndex = 5
System.out.println(v.get(answerIndex).getEng() + "?"); // ex) v.get(5).getEng()
for(int i=0; i<r_quiz.length; i++){
System.out.print("(" + (i+1) + ")");
System.out.print(v.get(r_quiz[i]).getKor() + " ");
// 1. v.get(10) 2. v.get(5) 3. v.get(2) 4. v.get(9)
}
System.out.print(" >> ");
int userSelect = sc.nextInt();
if(userSelect == -1){
System.out.println("\"명품영어\"를 종료합니다...");
break;
}
else if((userSelect-1) == answerNum){
System.out.println("Excellent!!\n");
}
else{
System.out.println("No....\n");
}
}
}
void make(){
for(int i=0; i<4; i++){
r_quiz[i] = (int)(Math.random()*v.size()); // r_quiz에 랜덤 숫자 4개 저장
for(int j=0; j<i; j++){
if(r_quiz[j] == r_quiz[i]){
i--;
continue;
}
}
}
}
public static void main(String[] args) {
WordQuiz wq = new WordQuiz();
wq.run();
}
}
------------------------------------------------
"명품단어"의 단어 테스트를 시작합니다. -1을 입력하면 종료합니다.
현재 22개의 단어가 들어 있습니다.
love?
(1)오류 (2)걱정 (3)사랑 (4)눈 >> 3
Excellent!!
ant?
(1)나쁜 (2)사랑 (3)개미 (4)걱정 >> 3
Excellent!!
developer?
(1)사랑 (2)조각상 (3)인형 (4)개발자 >> 4
Excellent!!
love?
(1)사랑 (2)인간 (3)인형 (4)이력서 >> 1
Excellent!!
picture?
(1)개미 (2)그림 (3)동물 (4)곰 >> 3
No....
picture?
(1)사랑 (2)인형 (3)걱정 (4)그림 >> 4
Excellent!!
bad?
(1)단어 (2)나쁜 (3)아기 (4)손 >> -1
"명품영어"를 종료합니다...