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