티스토리 뷰
1st. 랜덤없이 순서대로 단어게임
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Random;
public class dic {
public static void main(String[] args) {
// TODO 단어장 만들기
// 영어단어
ArrayList<String> eng = new ArrayList<>();
eng.add("dog");
eng.add("cat");
eng.add("pizza");
eng.add("java");
// 한글 뜻
ArrayList<String> kor = new ArrayList<>();
kor.add("개");
kor.add("고양이");
kor.add("피자");
kor.add("자바");
/////////////////////////////While로 무한루프를 만든다////////////////////
while (true) {
// 선택창
System.out.println("★☆★☆★☆★☆★☆★☆★☆★☆★☆");
System.out.println("원하는 옵션의 번호를 입력하세요");
System.out.println("1)단어추가 2)단어삭제 3)단어변경 4)단어게임 5) Exit");
System.out.println("★☆★☆★☆★☆★☆★☆★☆★☆★☆");
// 단어추가 선택 (input = 1)
Scanner scan = new Scanner(System.in);
int input = Integer.parseInt(scan.nextLine());
if (input == 1) {
System.out.println("현재단어:");
for (int i = 0; i < eng.size(); i++) {
System.out.println((i + 1) + "번" + eng.get(i) + ":" + kor.get(i));
}
System.out.println("추가할 단어와 뜻을 입력하세요");
String neweng;
String newkor;
System.out.println("영단어");
neweng = scan.nextLine();
eng.add(neweng);
System.out.println("뜻");
newkor = scan.nextLine();
kor.add(newkor);
System.out.println("현재단어:");
for (int i = 0; i < eng.size(); i++) {
System.out.println((i + 1) + "번" + eng.get(i) + ":" + kor.get(i));
}
// 단어 삭제 (input =2)
} else if (input == 2) {
System.out.println("현재단어:");
for (int i = 0; i < eng.size(); i++) {
System.out.println((i + 1) + "번" + eng.get(i) + ":" + kor.get(i));
}
System.out.println("삭제할 단어의 번호를 입력하세요");
int input2 = Integer.parseInt(scan.nextLine());
eng.remove(input2 - 1);
kor.remove(input2 - 1);
System.out.println("현재단어:");
for (int i = 0; i < eng.size(); i++) {
System.out.println((i + 1) + "번" + eng.get(i) + ":" + kor.get(i));
}
// 단어 변경 (input =3)
} else if (input == 3) {
System.out.println("현재단어:");
for (int i = 0; i < eng.size(); i++) {
System.out.println((i + 1) + "번" + eng.get(i) + ":" + kor.get(i));
}
System.out.println("뜻을 변경할 단어의 번호를 입력하세요");// Q. temp를 써야하는지. 지우고 넣기로 해도되는지
int input2 = Integer.parseInt(scan.nextLine());
kor.remove(input2 - 1);
System.out.println("뜻을 입력하세요"); // add로만 하면 값이 다 밀려남. list.add(1,10) : index 1뒤에 10 삽입
String newKor;
newKor = scan.nextLine();
kor.add(input2 - 1, newKor);
System.out.println("현재단어:");
for (int i = 0; i < eng.size(); i++) {
System.out.println((i + 1) + "번" + eng.get(i) + ":" + kor.get(i));
}
// 단어 게임 (input=4) / 순서대로
} else if (input == 4) {
String input2;
String answer;
for (int i = 0; i < eng.size(); i++) {
System.out.println("단어의 뜻을 입력하세요");
System.out.println(eng.get(i));
input2 = scan.nextLine();
answer = kor.get(i);
if(input2.equals(answer)) { // list.contains(1); : 리스트에 1이 있는지 검색.
System.out.println("정답입니다");
}else {
System.out.println("오답입니다");
System.out.println("정답은:" + kor.get(i));
}
}
// 나가기
} else if (input == 5) {
System.out.println("-_-_-_-Bye Bye-_-_-_-");
break;
} else {
System.out.println("잘못된 입력입니다. 다시 입력하세요.");
}
}
}
}
2nd. 단어게임을 랜덤으로 무한반복(for문) & break로 나가기
else if (input == 4) {
System.out.println("단어게임을 시작합니다. 요잇");
System.out.println("그만하려면 exit을 입력하세요");
String input2;
String answer;
String ex = "exit";
Random rd = new Random(); // 랜덤 가져오고
for (;;) {
int ranNum = rd.nextInt(eng.size());
int [] order = new int [eng.size()];
System.out.println("단어의 뜻을 입력하세요");
System.out.println(eng.get(ranNum));
input2 = scan.nextLine();
answer = kor.get(ranNum);
if(input2.equals(ex)) {
break;
}else if(input2.equals(answer)) { // list.contains(1); : 리스트에 1이 있는지 검색.
System.out.println("정답입니다");
}else {
System.out.println("오답입니다");
System.out.println("정답은:" + kor.get(ranNum));
}
}
여기서 for (;;)는 무한반복되는 루프를 의미
exit을 눌렀을 때 그만하도록 하기 위해서 string ex를 하나 더 만들어준다
또한 break의 위치가 중요한데 if와 else if로 구분해주어야 나가기 exit과 정답, 오답 게임이 모두 정상적으로 실행된다.
더하기.
변수의 이름을 설정할 경우에는 되도록 소문자를 사용한다. ex) Kor, Eng이 아니라 kor, eng으로
'JAVA' 카테고리의 다른 글
Switch_동일값 case에서 실행 (0) | 2020.08.12 |
---|---|
SimpleDateFormat_원하는 포맷으로 시간출력 (0) | 2020.08.12 |
Random_로또출력 (0) | 2020.08.11 |
Random_랜덤 생성 (0) | 2020.08.11 |
ArrayList_배열을 크기제한 없이 만들기 (0) | 2020.08.11 |
댓글