所以我试图制作一个刽子手游戏,它会从一个单词文件中生成一个随机单词,要求用户输入一个字母,然后翻阅该单词并将字母打印出来或打印出来a" _"。我知道我的"对不起没找到匹配"现在是不正确的,但是到目前为止打印这个词的时候,我无法保持猜到的最后一个正确的字母
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");
}
}
}
}
}
答案 0 :(得分: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!