[Java 1000第]Word Scramble 1-単語スペル


質問する


[問題1]以下の例を完了してください.
getAnswer(String[]strArr)は、アレイstrArrの要素をランダムに選択して返します.(Math.random()を使用)
getScrambleWord(String str)は、指定した文字列strの各文字の順序を混合し、新しい文字列を返します.
(Math.random()を使用)
class WordScrambleEx1 {
      public static void main(String[] args) {
            String[] strArr = { "CHANGE", "LOVE", "HOPE", "VIEW"};

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

            System.out.println("Question:"+question);
            System.out.println("Answer:"+answer);
      } // main

      public static String getAnswer(String[] strArr) { 
           // 내용을 완성하세요.

      }
     
      public static String getScrambledWord(String str) { 
            // 내용을 완성하세요.

      } // scramble(String str)
}
[運転結果]
Question:HEPO
Answer:HOPE
[注意]Math.random()を使用するため、上記の実行結果とは異なる場合があります.
https://cafe.naver.com/javachobostudy/24601

私の答え


ランダムに混ざった単語の答えを探し出す解答用紙を作ると理解する.△入力を受信していないため、問題の正確な意図を特定できない.
まず,与えられた配列から特定の文字をランダムに抽出するgetAnswerは,問題提示において与えられたMathに従う.random()メソッドの範囲を指定し、インデックスを抽出し、ランダム値を出力します.
getScrambledWordはgetAnswerとは異なり、ランダム値だけでなく、すべての文字を巡回しながらランダム値を抽出して交換することで、順序が混ざった文字列を生成します.
public class WordScrambleEx1 {

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

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

        System.out.println("Question:"+question);
        System.out.println("Answer:"+answer);
    }

    private static String getAnswer(String[] strArr) {
        int randomIndex = getRandomNum(0, strArr.length - 1);
        return strArr[randomIndex];
    }

    private static String getScrambledWord(String str) {
        char[] wordArr = str.toCharArray();
        return new String(shuffle(wordArr));
    }

    private static int getRandomNum(int minNum, int maxNum) {
        return (int)(Math.random() * (maxNum - minNum + 1)) + minNum;
    }

    private static char[] shuffle(char[] arr) {
        int randomIndex;
        char tempChar;

        for (int i = 0; i < arr.length; i++) {
            randomIndex = getRandomNum(0, arr.length - 1);

            tempChar = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = tempChar;
        }

        return arr;
    }
}

作者の紹介


単語のスペルは2から1題の一部があります.文字列を混ぜる方法は同じですが、実はshuffleの方法を簡単に作る方法を考えていたとき、javaの定式化に応用できる方法があることに気づきましたので、使った後で発見する方法は同じです.ははは
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)
}