java - 在for循环中匹配两个char类型数组,for循环无法正确执行

标签 java for-loop multidimensional-array compare

很难解释这里发生了什么。我正在用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/

相关文章:

java - 这个函数是原子函数吗?

Java 接口(interface) : Calling an implementation class based on object types

PHP:仅执行for循环来显示html

java - Android - 计算两个数字出现在单元格编号中的时间

java - weld-osgi、pax-cdi 和fighterfish 之间有什么区别

java - 使用 Java 搜索 PDF 文档中的特定文件

scala - For 循环 Scala 的快速功能等效项

swift - 如何使用map方法重构两个for循环

java - 使用java中的比较器对二维数组的每一列进行排序

javascript - 使用背包变体的最佳 MLB 阵容