1

ここで何が起こっているのか説明するのはちょっと難しいです。私は追加のクレジット割り当てのためにJavaで絞首刑執行人を作っています。ユーザーが入力した文字がランダムな単語であるかどうかを確認したいと思います。2次元のchar配列があります。0列は回答の各文字用であり、1列は正しく推測された文字用です。

    char[] usedLetters =new char[guesses];
    char[][] checker = new char[wordSize][2];
    char[] answer = new char[wordSize];
    String tempAnswer=word.randomWord();
    System.out.println(tempAnswer);
    answer=tempAnswer.toCharArray();
    for(int i = 0;i<wordSize;i++)
    {
        checker[i][0]=answer[i];
    }

    System.out.println("Enter your first guess!");
    char let=scan.next().charAt(0);

    for(int i = 0; i<wordSize; i++)
    {
        if(checker[i][0]==let)
        {
            checker[i][1]=let;
            System.out.println("found in" + i);
        }
        else
        {
            System.out.println("not found in" + i);
        }
    }

    usedLetters[g]=let;
    System.out.println("Guesses so far: " +g);
    System.out.print("Letters used so far: ");

この問題は、2番目のforループで発生します。ifelseステートメントのいずれかがコンソールに出力されます。この問題は解決できません。iveがコンソールで取得したものは次のとおりです。

から選択する127142の単語があります

推測したい単語はどれくらいですか?

9

いくつの推測が必要ですか?

10

ブタノン

あなたの最初の推測を入力してください!

b

これまでの推測:1

これまでに使用された文字:

elseが出力する場合、両方を完全にスキップすることに注意してください。私は非常に多くの異なる方法を試しましたが、それは私のマッチングforループを無視し続けます。助言がありますか?

リクエストに応じて、これはハングマンクラスの始まりです。6か月以上のプログラミング経験がある人にとって、これは恐ろしいことです。

public class Hangman
{
    private Scanner scan;
    private int wordSize;
    private Words word;
    private int guesses;
    private boolean winner;
    public void setup()
    {
        scan = new Scanner(System.in);
        word = new Words();
        System.out.println("How long is the word you would like to guess?");
        int wordSize=scan.nextInt();
        word.setGameWordList(wordSize);
        System.out.println("How many guesses would you like?");
        guesses=scan.nextInt();
    }
public void play()
    {
        int g = 1;
        char[] usedLetters =new char[guesses];
        char[][] checker = new char[wordSize][2];
        char[] answer = new char[wordSize];
        String tempAnswer=word.randomWord();
        System.out.println(tempAnswer);
        answer=tempAnswer.toCharArray();
        for(int i = 0;i<wordSize;i++)
        {
            checker[i][0]=answer[i];
        }

        System.out.println("Enter your first guess!");
        char let=scan.next().charAt(0);

        for(int i = 0; i<wordSize; i++)
        {
            if(checker[i][0]==let)
            {
                checker[i][1]=let;
                System.out.println("found in" + i);
            }
            else
            {
                System.out.println("not found in" + i);
            }
        }
4

1 に答える 1

1

intセットアップ方法では、 inを取り出すだけint wordSize=scan.nextInt();です。

新しい変数wordSizeはローカルにsetup()なり、その値をに保持しませんplay()。代わりに、インスタンス変数を設定する必要がありますwordSize

于 2012-12-08T18:46:57.977 に答える