JAVA예제2010. 9. 10. 20:02
/**
 * Created by IntelliJ IDEA.
 * User: moonleaf
 * Date: 2010. 9. 10
 * Time: 오후 7:40:50
 * To change this template use File | Settings | File Templates.
 */
public class Ex005 {

    public static void main(String[] args) {
       String[] data = {
                        "다음 중 키워드가 아닌 것은?`2`final`True`if`public",
                        "다음 중 자바의 연산자가 아닌 것은?`5`&`|`++`!=`/`^",
                        "다음 중 메서드의 반환값이 없음을 의미하는 키워드는?`1`void`null`false`",
                        };

       for(int i=0;i<data.length;i++) {
           String[] strArr;
           String[] strArr2;
           String str = data[i];
           int j = 1;
       // 1. String클래스의 String[] split(String regex, int limit)를 사용해서 문제와 선택지를 나누세요.
           strArr = str.split("`" , 3);
       // 2. 문제를 출력하세요.
           System.out.println(strArr[0]);

       // 3. 선택지를 나누기 위해 String[] split(String regex)를 사용하세요.
           strArr2 = strArr[2].split("`");

       // 4.반복문을 이용해서 선택지를 출력하세요.
           for(String str2 : strArr2){
               ;
               System.out.print(j+"." + " " + str2 +"    ");

               j = j+1;

           }
           System.out.println("");
       }
    } // main
}

'JAVA예제' 카테고리의 다른 글

JAVA 예제 2-3  (0) 2010.09.13
JAVA 예제 2-2  (0) 2010.09.13
JAVA 예제 1-4  (0) 2010.09.10
JAVA 예제 1-3  (0) 2010.09.10
JAVA 예제 1-2  (0) 2010.09.10
Posted by 달빛낙엽
JAVA예제2010. 9. 10. 19:34
import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: moonleaf
 * Date: 2010. 9. 10
 * Time: 오후 6:24:21
 * To change this template use File | Settings | File Templates.
 */
public class Ex004 {
      public static void main(String[] args) {
            String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};
            Scanner s = new Scanner(System.in);  // 한번 생성해 놓고 재사용하면 되므로 반복문 밖으로 이동


            while(true) {
                  String answer = getAnswer(strArr);
                  String question = getScrambledWord(answer);
                  char[] hint = new char[answer.length()];


                  // hint를 '_'로 초기화 한다. 정답이 LOVE라면 hint는 "____"이 된다.
                  for(int i=0;i < hint.length;i++) {
                        hint[i] = '_';
                  }

                  while(true) {
                        System.out.println("Question :" + question);
                        System.out.print("Your answer is :");

                        String input = s.nextLine();

                        if(input.equalsIgnoreCase("q"))
                              System.exit(0);

                        if(input.equalsIgnoreCase(answer)) {
                              System.out.println("정답입니다.");
                              System.out.println();
                              break;
                        } else {
                              System.out.println(input+"은/는 정답이 아닙니다. 다시 시도해보세요.");
                              System.out.println("Hint:"+getHint(answer,hint));
                        }
                  } // while
            } // outer 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 < chArr.length * 2; i++) {

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

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

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

      public static String getHint(String answer, char[] hint) {
          int count = 0; // 힌트에 포함된 '_'의 개수
          char[] answerArr = answer.toCharArray();

          for(Character chr : hint){
              if(chr.equals('_')){
                  count = count + 1;
              }


          }
          System.out.println(count);
          if(count > 2 ){
               boolean stop = true;
              while(stop){
                  int i = (int)(Math.random()*answer.length());
                  Character chr = hint[i];
                  if(chr.equals('_')){
                      hint[i] = answerArr[i];
                      stop = false;
                  }
              }
          }
           // 1. 반복문을 이용해서 hint에 포함된 '_'의 개수를 센다.

           // 2. count의 값이 2보다 클 때만 정답의 한 글자를 hint에 넣는다.

           //    정답을 다 알려주는 상황이 되지 않게 하기 위함.


           //    [주의] 반드시 이전 힌트 보다 한글자를 더 보여줘야함.

           //    예를 들어 정답이 "LOVE"이고 이전 힌트가 "L___"이었다면

           //    그 다음 힌트는 "L__E"또는 "L_V_" 와 같은 식이어야 한다.

           //    Math.random()을 사용해서 정답의 한 글자를 골라서 힌트에 넣으면 된다.
          return new String(hint);

      } // getHint()
}

'JAVA예제' 카테고리의 다른 글

JAVA 예제 2-2  (0) 2010.09.13
JAVA 예제 2-1  (0) 2010.09.10
JAVA 예제 1-3  (0) 2010.09.10
JAVA 예제 1-2  (0) 2010.09.10
JAVA 예제 1-1  (0) 2010.09.10
Posted by 달빛낙엽
JAVA예제2010. 9. 10. 18:22
import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 * User: moonleaf
 * Date: 2010. 9. 10
 * Time: 오후 5:10:08
 * To change this template use File | Settings | File Templates.
 */
public class Ex003 {
    public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};
            boolean stop = true;


            while(stop){
                String answer = getAnswer(strArr);
                String question = getScrambledWord(answer);

                while(stop) {
                      System.out.println("Question :" + question);
                      System.out.print("Your answer is :");


                      // 1. 화면을 통해 사용자의 입력을 받는다.(Scanner클래스 사용)

                    String input = in.nextLine();
                    // 2. 사용자가 q 또는 Q를 입력하면 프로그램을 종료한다.
                    if(input.equals("q") || input.equals("Q")){
                        stop = false;
                    }
                    // 3. 사용자가 정답을 맞출때까지 반복하다가
                    //     사용자가 정답을 맞추면, while문을 빠져나간다.
                    if(answer.equalsIgnoreCase(input)){
                        System.out.println("정답입니다.");
                        stop = false;
                    }else{
                        System.out.println("오답입니다. 다시 시도해 보세요.");
                    }
                } // 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()*2;i++) {


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

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

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



'JAVA예제' 카테고리의 다른 글

JAVA 예제 2-2  (0) 2010.09.13
JAVA 예제 2-1  (0) 2010.09.10
JAVA 예제 1-4  (0) 2010.09.10
JAVA 예제 1-2  (0) 2010.09.10
JAVA 예제 1-1  (0) 2010.09.10
Posted by 달빛낙엽