0

我解决了确保只使用数组中的字母的问题,现在我需要一种将字典导入或加载到控制台的方法,这样就不能使用假词。我有找到一个 txt 文档并在程序启动时将其加载到数组中的想法,但我没有找到任何运气。如果有人找到方法,请提供有关如何将其加载到 hsa.console 表单的详细说明。谢谢。(Java 准备编程 hsa.console)

4

2 回答 2

0

这是一些解决单词是否存在的问题。我不确定你是如何存储字符数组的,所以我猜它是一个二维字符数组。wordExists 方法是用于检查单词是否存在的方法。我使用了一个测试来检查它是否有效,并且它在多个输入上都有效。编辑:我刚刚意识到,如果它是回文,这可能会导致单词循环回到自身,我一制作就发布固定代码

public static boolean wordExists(char[] [] characters, String word)
{
    char[] word_as_char = word.toCharArray();
    for (int i = 0; i < characters.length; i++)
    {
        for (int j = 0; j < characters[0].length; j++)
        {
            boolean wordExists = checkWord(characters, word_as_char, 0, i, j);
            if (wordExists)
            {
                return true;
            }
        }
    }
    return false;
}

public static boolean checkWord(char[] [] characters, char[] word, int index, int x, int y)
{
    boolean wordExists = false;
    if (index < word.length) {
        if (characters[x] [y] == word[index])
        {
            if (x + 1 < characters.length)
            {
                wordExists = wordExists | checkWord(characters, word, index + 1, x + 1, y);
            }
            if (x - 1 > 0)
            {
                wordExists = wordExists | checkWord(characters, word, index + 1, x - 1, y);
            }
            if (y + 1 < characters[0].length)
            {
                wordExists = wordExists | checkWord(characters, word, index + 1, x, y + 1);
            }
            if (y - 1 > 0)
            {
                wordExists = wordExists | checkWord(characters, word, index + 1, x, y - 1);
            }
        }
    }
    if (index == word.length - 1 && characters[x] [y] == word[index])
    {
        wordExists = true;
    }
    return wordExists;
}

}

于 2013-01-15T23:51:49.143 回答
0

CheckLetter != (" ")不检查内容相等性,它检查引用相等性 - 这两个变量是否引用同一个对象。使用!" ".equals(CheckLetter). 更好的是,不要String用于保存单个字符,有char这个,并且有Character一些处理它们的方法的类(如toUpperCase)。

于 2013-01-15T23:52:53.093 回答