[Java1000제] Word Scramble3

[Java 1000제] Word Scramble 단어 맞추기3

[Java1000제] Word Scramble2에서 배운것을 바탕으로해서 심화 문제를 풀어보겠습니다.

문제

문제2의 예제를 변경해서, 문제를 맞추더라도 프로그램이 종료되지 않고 다음문제를 보여주도록 하세요.

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
32
33
34
35

import java.util.*;

class WordScrambleEx3 {
public static void main(String[] args) {
String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};


// 코드를 넣어 완성하세요.

// hint : while문을 중첩해서(2개의 while문) 작성하세요.

} // main

public static String getAnswer(String[] strArr) {
int idx = (int)(Math.random()*strArr.length);
return strArr[idx];
}

public static String getScrambledWord(String str) {
char[] chArr = str.toCharArray();

for(int i=0;i < str.length();i++) {


int idx = (int)(Math.random()*str.length());

char tmp = chArr[i];
chArr[i] = chArr[idx];
chArr[idx] = tmp;
}

return new String(chArr);
} // scramble(String str)
}

해답

이전에 만들어 놓은 해답을 가지고 계속 변형하니깐 재미있네요. 이미 존재하는 코드를 수정해야해서 새로 시작하는 것보다 고민이 더 많은것 같아요.
다음에는 어떤 문제가 나올지 기대되네요. 아래의 답을 보시고 더 좋은 방법이 있다면 댓글로 남겨주세요!

메인함수만 아래에 작성하였습니다. 참고 부탁드려요!

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
32
33
34
35
36
37
38
39
40
41
42
43

public static void main(String[] args) {
String[] strArr = {"CHANGE", "LOVE", "HOPE", "VIEW"};

String answer = getAnswer(strArr);
String question = getScrambledWord(answer);

while(true) {
String _answer;
Scanner sc = new Scanner(System.in);


while(true) {
// 1. 문제를 제시한다
System.out.println("Question :" + question);
System.out.print("Your answer is :");

// 2. 화면을 통해 사용자의 입력을 받는다.(Scanner클래스 사용)
_answer = sc.next().toUpperCase();
_answer = _answer.replaceAll(" ", "");

// 3. 사용자가 q 또는 Q를 입력하면 프로그램을 종료한다.
if(_answer.equals("Q")){
sc.close(); //입력 프로그램 종료
System.exit(0);
}

if(answer.equals( _answer)) {
// 4. 맞추면 새로운 문제를 만든다
System.out.println("정답은 "+ _answer +"!!!");
System.out.println("정답 입니다!!");
answer = getAnswer(strArr);
question = getScrambledWord(answer);
break;
}else{
// 5. 틀리면 계속 문제를 반복해 푼다
System.out.println( _answer +" 정답이 아닙니다. 다시 시도해보세요.");
}

}//while

} //Outer while
} // main

감사합니다! 더 좋은 해결 방법이 있다면 댓글 부탁드려요!

Reference

Share