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 个项目。第二个数组可以包含 0 和 1。最初将其全部设置为 0,如果位置 array2[x] 中的字母被猜到,则将值设置为 1。这将允许您在第二个数组上使用 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 回答