정구리의 우주정복

[Java 예제 1000제] Word Scramble 2- 단어 맞추기 본문

JAVA/STUDY

[Java 예제 1000제] Word Scramble 2- 단어 맞추기

Jungry_ 2022. 2. 1. 16:05
반응형

https://cafe.naver.com/javachobostudy

 

남궁성의 코드초보스터디(자바 java... : 네이버 카페

전문가가 지도하는 스터디카페에요. 프로그래밍언어(자바 java, C언어)를 제대로 배우고픈 분들 오세요.

cafe.naver.com

문제


[문제2] 다음의 예제에서 while문의 내부를 주석의 내용을 참고해서 완성하세요.

import java.util.*;

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

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

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

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

                  // 2. 사용자가 q 또는 Q를 입력하면 프로그램을 종료한다.

                  // 3. 사용자가 정답을 맞출때까지 반복하다가

                  //     사용자가 정답을 맞추면, while문을 빠져나간다.

            } // 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)
}

[실행결과]

Question :HEOP
Your answer is :phoe
phoe은/는 정답이 아닙니다. 다시 시도해보세요.
Question :HEOP
Your answer is :hope
정답입니다.

 

나의 정답


package prac;

import java.util.*;

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

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

        while(true) {
            System.out.println("Question :" + question);
            System.out.print("Your answer is :");
            Scanner scanner = new Scanner(System.in); //입력 받기
            String input = scanner.nextLine();
            if(input.equals("q")||input.equals("Q")){
                break;
            }else{
                System.out.println("Your answer is >> "+input);
                if(input.equalsIgnoreCase(answer)){ //대소문자 구분 없이
                    System.out.println("정답입니다");
                    break;
                }else{
                    System.out.println(input+"은 정답이 아닙니다 다시 시도해보세요");
                }
            }


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

            // 2. 사용자가 q 또는 Q를 입력하면 프로그램을 종료한다.

            // 3. 사용자가 정답을 맞출때까지 반복하다가

            //     사용자가 정답을 맞추면, while문을 빠져나간다.

        } // 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)
}

!!주의 해야할 점 !!

input.equals('q')

input.equals("q") 는 다르다 !! '' 를 쓰면 char 로 인식되고 "" 를 쓰면 String 으로 인식이 된다

 

equalsIgnoreCase  를 사용하면 equals 와 다르게 대소문자를 구분하지 않고 같은지 확인해준다

반응형
Comments