配列内の文字のみが使用されるようにすることで問題を解決しました。今度は、偽の単語を使用できないように、コンソールに辞書をインポートまたはロードする方法が必要です。プログラムの起動時にtxtドキュメントを見つけて配列にロードするという考えがありましたが、見つけられませんでした。誰かが方法を見つけた場合は、それを hsa.console フォームにロードする方法の適切な説明を提供してください。ありがとう。(Java Ready to Program hsa.console)
2 に答える
0
これは、単語が存在するかどうかを解決するものです。文字の配列をどのように保存しているのかわからなかったので、文字の2次元配列であると推測しました。メソッド 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 != (" ")
コンテンツの等価性はチェックしません。参照の等価性をチェックします。これら 2 つの変数は同じオブジェクトを参照しています。を使用し!" ".equals(CheckLetter)
ます。String
さらに良いことに、単一の文字を保持するために使用しないでください。char
これには、Character
それらを処理するためのいくつかのメソッドを持つクラスがあります ( などtoUpperCase
)。
于 2013-01-15T23:52:53.093 に答える