일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링
- lombok설치
- 비전공개발자
- springsecurity
- 자바별찍기
- 자바
- springDI
- 스프링DI
- 자바세팅
- springtoolsuite
- springtoolsuite 설치
- 스프링부트
- 자바UTF-8
- spring세팅
- springboot
- eclipseUTF-8
- spring
- 코드로배우는스프링부트웹프로젝트
- eclipse
- 스프링세팅
- java생성자
- 자바계산기
- java세팅
- 코드로배우는스프링웹프로젝트
- java
- javaclass
- 명품자바
- 자바static
- 구멍가게코딩단
- 자바인스턴스
Archives
- Today
- Total
딴따라 제퍼의 개발 유랑기
명품자바 7장 오픈챌린지 (단어 Quiz 게임) 본문
컬렉션을 사용하기 시작했다.
(근데 왜 Arraylist가 아닌 Vector를 썼지..?)
import java.util.Random;
import java.util.Scanner;
import java.util.Vector;
class Word {
private String eng;
private String kor;
public Word(String eng, String kor) {
this.eng = eng;
this.kor = kor;
}
public String getEng() {
return eng;
}
public String getKor() {
return kor;
}
}
public class OpenChallenge01 {
Scanner scan = new Scanner(System.in);
Vector<Word> v = new Vector<>();
Random rand = new Random();
final int MAX_CHOICE = 4;
int[] question = new int[MAX_CHOICE];
public OpenChallenge01() {
setVector(); // 벡터에 영+한 단어 객체를 생성한다.
System.out.println("Java 단어 테스트를 시작합니다. -1을 입력하면 종료합니다.");
System.out.println("현재 " + v.size() + "개의 단어가 들어 있습니다.");
System.out.println("__________________________________________________");
game();
}
public void game() {
while(true) {
setChoice(); // 랜덤 숫자 4개(보기의 숫자만큼) 생성해서 배열에 담기
int answerNum = rand.nextInt(4); //0~3중 정답번호 생성
int answerIndex = question[answerNum]; // 정답번호를 가지고있는 배열 안에 들어있는 숫자가 정답이다.
System.out.println(v.get(answerIndex).getEng() + "?"); // 정답 인덱스의 영어단어를 물어보고
for(int i=0; i<question.length; i++) { //벡터의 인덱스로는 question 배열에 담긴 값들을 하나씩 넣으면서
System.out.print("(" + (i+1) + ")"); //해당 인덱스의 kor를 출력한다.
System.out.print(v.get(question[i]).getKor() + " ");
}
System.out.print(">> ");
int choice = scan.nextInt();
if(choice == -1) {
System.out.println("종료합니다.");
break;
}
else if(choice-1 == answerNum) { //초이스는 1~4이지만 인덱스는 0~3이기때문에 초이스-1해준다.
System.out.println("Excellent !!");
System.out.println("__________________________________________________");
} else {
System.out.println("No. !!");
System.out.println("__________________________________________________");
}
}
}
public void setChoice() {
for(int i=0; i<MAX_CHOICE; i++) { // 보기 4개를 랜덤하게 만들기위해 question배열에 0~3 랜덤값 4개를 넣는다.
question[i] = rand.nextInt(v.size()); // 같은 보기가 나오면 안되기때문에 중복되지 않게 넣는다.
for(int j=0; j<i; j++) {
if(question[i] == question[j]) {
i--;
continue;
}
}
}
}
public void setVector() {
v.add(new Word("constructor", "생성자"));
v.add(new Word("overriding", "재정의"));
v.add(new Word("extends", "상속"));
v.add(new Word("array", "배열"));
v.add(new Word("string", "문자열"));
v.add(new Word("character", "문자"));
v.add(new Word("integer", "정수"));
v.add(new Word("double", "실수"));
v.add(new Word("abstract", "추상"));
v.add(new Word("implements", "구현하다"));
}
public static void main(String[] args) {
new OpenChallenge01();
}
}
'Repository' 카테고리의 다른 글
계산기 (Java Swing) (0) | 2021.01.27 |
---|---|
명품자바 8장 오픈챌린지 (Hangman 게임) (0) | 2021.01.27 |
명품자바 5장 오픈챌린지 (Bear와 Fish게임) (0) | 2021.01.27 |
명품자바 5장 실습문제 12번 (LinkedList) (0) | 2021.01.27 |
명품자바 4장 실습문제 12번 (예약시스템) (0) | 2021.01.27 |
Comments