0

これをプログラムする方法についていくつかのヒントが必要です。この方法は絞首刑執行人のゲーム用guessChです。ユーザーが推測しsecretChた文字であり、秘密の単語の文字はwhile() loop一度に1つずつです。しかし、私が必要としているのはif (guessCh != secretCh)、秘密の単語がいくつかの文字で構成されているために機能しないのではなく、秘密の単語内のすべての文字からポイントを減算することです。文字が文字/または秘密の単語のguessChいずれにも見つからない場合にのみ、 -1を引く必要があります。secretCh

私はこれに固執しているようです、私はそれが単純であることを知っています...しかし私に骨を投げてください。私はすでにこれに多くの時間を費やしました。

private void nTurns(char guessCh, char secretCh) {
    //Create an array that stores already used letters
    if (guessCh != secretCh) {
        nTurnsLeft--;
    }
}
4

3 に答える 3

4

シークレットで見つかった文字のArrayListを実行できます。次に .contains(Char c)、ArrayListのメソッドを使用します

例:

ArrayList<Char> secret = new ArrayList<Char>();
secret.add('w');
secret.add('o');
secret.add('r');
secret.add('l');
secret.add('d');

if(secret.contains(new Char('x')) {
    System.out.println("Found");
} else {
    System.out.println("Not Found");
}
于 2012-09-23T18:54:33.273 に答える
2

これは宿題かもしれないと思うので、gtgaxiolaの答えは先生が見たくないものかもしれません。.contains()と同等の文字を通常の文字配列に実装して、現在のコードをあまり変更する必要がないようにする方法を次に示します。

    char[] secretCh = new char[]{'s', 'e', 'c', 'r', 'e', 't'};
    char guessCh = 'e';

    boolean found = false;
    for(int i = 0; i < secretCh.length; i++) { // loop through each character in the secretCh array
        if (secretCh[i] == guessCh) {
            found = true;
            break;
        }
    }
    if (found)
        System.out.println("guessCh is a letter in the secret word.");
于 2012-09-23T19:08:22.997 に答える
2

Stringオブジェクトには、この機能がすでに組み込まれています。

本当に必要なのは次のようなものです。

if(secretStr.indexOf(guessCh) < 0) nTurnsLeft--;

indexOfは、StringsecretStr内のcharguessChの場所のインデックスを返します。guessChが見つからない場合、indexOfは-1を返します。

于 2012-09-23T19:14:18.943 に答える