0

だから私は、単語のファイルからランダムな単語を生成し、ユーザーに文字を要求し、単語を調べて、発生した場所に文字を出力するか、「_」を出力するハングマンゲームを作成しようとしています。「申し訳ありませんが、一致するものが見つかりませんでした」が間違っていることはわかっていますが、これまでに単語を印刷するときに、最後に推測された正しい文字を適切な位置に保つことができません。

    import java.util.Scanner;
    import java.util.Random;
    import java.io.*;
    public class hangman

    {
public static void main(String args[])
{

    Scanner hangman = null; 

    try 
    {
        // Create a scanner to read the file, file name is parameter
            hangman = new Scanner (new File("C:\\Users\\Phil\\Desktop\\hangman.txt"));
        } 
    catch (FileNotFoundException e) 
        {
        System.out.println ("File not found!");
        // Stop program if no file found
        System.exit (0);
        }



    String[] list = new String[100];
    int x = 0;

    while(hangman.hasNext())
    {
        list[x] = hangman.nextLine();
        x++;
    }

    Random randWord = new Random();
    String word = "";
    int wordNum = 0;
    boolean stillPlaying = true;

    wordNum = randWord.nextInt(12);
    word = list[wordNum];
    System.out.println("The word has "+word.length()+" letters");

    Scanner letter = new Scanner(System.in);
    String guess = "";

    while(stillPlaying = true)
    {           

        System.out.println("Guess a letter a-z");
        guess = letter.nextLine();
        for(int y = 0; y<word.length(); y++)
        {
            if(word.contains(guess))
            {
                if(guess.equals(word.substring(y,y+1)))
                {
                    System.out.print(guess+" ");
                }
                else
                    System.out.print("_ ");
            }
            else
            {
                System.out.println("Sorry, no matches found");
            }
        }
    }



}

}

4

1 に答える 1

0

追加配列が好きかもしれません。つまり、char 配列の長さは 100 文字なので、別の配列の長さを 100 項目にすることができます。この 2 番目の配列には、0 と 1 を含めることができます。位置 array2[x] の文字が推測される場合は、最初にすべて 0 に設定し、値を 1 に設定します。これにより、2 番目の配列で for ループを使用できるようになります。

 for (int i = 0; i < sizeof(array2); i++){
     if (array2[i] == 0)
          print "_";
     else 
          print stringArray[i]
}

上記はおそらく正しいコードではありませんが、アイデアはそこにあるはずです。同じサイズの別の配列を使用して文字を追跡し、推測されているか推測されていないか (1 または 0) を確認します。これが役立つことを願っています

申し訳ありませんが、このソリューションは C です。インポートが表示されなかったか、最初の読み取りにタグを付けていませんでした。

array2 は単なる整数配列であり、文字列配列と同様の要素にアクセスできます。

for(int i = 0; i < finalString.length; i++){
    if (array2[i] == 0){
        copy "_" to finalString position i;
    }
    else {
        copy stringArray position i to finalString position i;
    }

}
Now you can print finalString and it should show the proper string with _ and letters!
于 2012-05-23T20:43:23.237 に答える