很难解释这里发生了什么。我正在用java制作刽子手以获得额外的学分作业。我想检查用户输入的字母是否在随机单词中。我有一个二维字符数组。 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: ");
问题出现在第二个 for 循环中。 if else 语句都没有打印到控制台。我无法解决这个问题。 这是我在控制台中得到的内容:
有 127142 个单词可供选择
您想猜的单词有多长?
9
你想猜多少个?
10
丁酮
输入你的第一个猜测!
b
目前的猜测:1
目前使用的字母:
注意它是如何完全跳过 if else 输出的!我尝试了很多不同的方法,但它一直忽略我的匹配 for 循环。有什么建议吗?
根据要求,这是 Hangman 类(class)的开始。对于任何拥有 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);
}
}
最佳答案
在您的设置方法中,只需取出 int wordSize=scan.nextInt();
中的 int
即可。
新变量 wordSize
成为 setup()
的本地变量,并且不会将其值保留在 play()
中。您需要设置实例变量 wordSize
。
关于java - 在for循环中匹配两个char类型数组,for循环无法正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780437/