정구리의 우주정복

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

JAVA/STUDY

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

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

https://cafe.naver.com/javachobostudy

 

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

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

cafe.naver.com

 

문제 


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

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

[실행결과]

Question :IWVE
Your answer is :ievw
ievw은/는 정답이 아닙니다. 다시 시도해보세요.
Question :IWVE
Your answer is :view
정답입니다.

Question :HOEP
Your answer is :hope
정답입니다.

Question :GNCAEH
Your answer is :change
정답입니다.

Question :HECNAG
Your answer is :q

 

나의 풀이


package prac;

import java.util.*;

class WordScrambleEx3 {
    public static void main(String[] args) {
        String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};
        boolean check = true;
        while(true) {
            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();
                System.out.println("Your answer is >> "+input);
                if(input.equals("q")||input.equals("Q")){
                    check = false;
                    break;
                }else {
                    if(input.equalsIgnoreCase(answer)){
                        System.out.println("정답입니다");
                        break;
                    }else{
                        System.out.println(input+"은 정답이 아닙니다 다시 시도해보세요");
                    }
                }
            }
            if (check==false) break;
        } // 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)
}

check 라는 boolean 변수를 하나 만들어서 break 를 걸어주게끔 만들어주었다 !! 두개의 while 문을 사용하고 어떻게 멈추는게 좋을지 고민하는게 중요했던 문제

반응형
Comments