我解决了这个问题,确保只使用数组中的字母,现在我需要一种方法将字典导入或加载到控制台中,因此无法使用假字。我有想法找到一个txt文档并在程序启动时将其加载到一个数组中,但我找不到任何运气。如果有人找到方法,请提供如何将其加载到hsa.console表单的良好说明。谢谢。 (Java准备编程hsa.console)
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
CheckLetter != (" ")
不检查内容相等性,它检查引用相等性 - 这两个变量引用同一个对象。使用!" ".equals(CheckLetter)
。更好的是,不要使用String
来保存单个字符,对此有char
,并且Character
类有一些处理它们的方法(如toUpperCase
)