0

そのため、私のプログラムでは、いくつかの異なるクラスをメインプログラムに組み込み、コードを作成しようとしています。

私に与えられたもの

    Dictionary() {
        dictionary = new String[NUMBER_OF_WORDS];
        Scanner inputStream = null;
        try {
            inputStream = new Scanner(new File(FILE_NAME));
        }catch (FileNotFoundException e) {
            System.out.println("Dictionary class cannot find file \"dictionaryData.txt\".");
            System.out.println("Please make sure that the file is in the project folder.");
            System.exit(0);
        }
        for (int i = 0; i < NUMBER_OF_WORDS; i++) {
            dictionary[i] = inputStream.next();
        }
    }

    public String getRandomWord(){
        Random generator = new Random();
        String temp = new String();
        temp += dictionary[generator.nextInt(NUMBER_OF_WORDS)];
        return temp;
    }

    public boolean find(String word) {
        int count = 0;
        int lowerIndex = 0;
        int upperIndex = NUMBER_OF_WORDS - 1;
        int middleIndex;
        while(lowerIndex <= upperIndex){
            middleIndex = (lowerIndex + upperIndex) / 2;
            count++;
            if(word.equalsIgnoreCase(dictionary[middleIndex])) { // found it
                return true;
            }
            else if (word.compareToIgnoreCase(dictionary[middleIndex]) < 0) { // word smaller than middle
                upperIndex = middleIndex - 1;
            }
            else { // word is larger than middle
                lowerIndex = middleIndex + 1;
            }
        }
        return false;
    }
}

別のクラス WordHider とともに

     WordHider() {
        secretWord = new String();
        wordMask = new String();
    }

    public String getWordMask() {
        return wordMask;
    }

    public String getSecretWord() {
        return secretWord;
    }

    public void setSecretWord(String newSecretWord) {
        secretWord = newSecretWord.toLowerCase();
        if (secretWord.length() > 0) {
            wordMask = HIDE_CHAR;
            for (int i = 1; i < secretWord.length(); i++) {
                wordMask += HIDE_CHAR;
            }
        }
    }

    public boolean isHiddenWordFound() {
        for (int i = 0; i < wordMask.length(); i++) {
            if(wordMask.charAt(i) == HIDE_CHAR.charAt(0)) {
                return false;
            }
        }
        return true;
    }
    public int revealLetter(String letter) {
        int count = 0;
        String newFoundWord = "";
        if (letter.length() == 1) {
            for (int i = 0; i < secretWord.length(); i++) {
                if ((secretWord.charAt(i) == letter.charAt(0))
                        && (wordMask.charAt(i) == HIDE_CHAR.charAt(0))) {
                    count++;
                    newFoundWord += letter;
                }
                else {
                    newFoundWord += wordMask.charAt(i);
                }
            }
        }
        wordMask = newFoundWord;
        return count;
    }
}

これらのクラスを使用して、次のようなコードを作成する必要があります。

Word: **********   Guesses Left: 5
Enter your guess: a
Miss!
Word: **********   Guesses Left: 4
Enter your guess: e
Miss!
Word: **********   Guesses Left: 3
Enter your guess: i
Word: i**i*i****   Guesses Left: 3
Enter your guess: o
Word: i**i*i*o**   Guesses Left: 3

これについていくつか質問がありますが、

1) 与えられた DictionaryData.text があり、それをコードに実装する必要があります。それには 81,000 語のリストが含まれており、プログラムにそこを認識させる方法がわかりません。Dictionary クラスは、ファイル "dictionaryData.txt" を見つけることができません。ファイルがプロジェクト フォルダにあることを確認してください。^ランダムな単語を印刷しようとすると、そのエラーが発生します

2)プログラムで単語の文字を星に変更するにはどうすればよいですか(単語を非表示にする)

3)すべてをループに入れますか?

4

1 に答える 1

0

Dictionary クラスと WordHider クラスの一部が欠落しています。それにもかかわらず、私はあなたの質問に答えようとします。

1) 私が言ったように、Dictionary クラスの一部が欠けています。次のようにクラスを組み込みます。

Dictionary dictionary = new Dictionary();
String word = dictionary.getRandomWord();

2) このように:

wordHider.setSecretWord(word);

3)「それ」が何であるかはわかりませんが、はい、ユーザーは文字を推測する必要があります。次に、文字が単語に含まれているかどうかを確認する必要があります。このような:

wordHider.revealLetter(letter);

次に、単語を表示し、ユーザーに別の文字を推測させる必要があります。この推測/チェック/表示はループする必要があります。

于 2013-03-28T22:58:20.740 に答える