我制作了这款boggle型游戏,到目前为止它的效果非常好。此方法用于搜索10x10网格以查看用户输入的单词是否正确。我遇到的问题是,此代码仅适用于从左到右,从上到下显示的单词。现在我不希望做对角线,但我想把它变成以相反顺序出现的单词也被系统接受的地方。我被告知你输入的单词必须翻转(反转),以便查看它是否匹配(这是有道理的。毕竟,你正在寻找一个单词作为后缀)。那么我究竟将如何实现这一目标呢?现在,我对编码不是很好,所以,如果你有时间,请写下我必须使用的代码。谢谢。
public static boolean wordSearch (char[][] table, String search)
{
int ctr = search.length();
String temp = "";
// LEFT TO RIGHT / X-AXIS
for (int row = 0; row < 10; row++) //Checks each row (x) one by one
{
for (int a = 0; a <= (10 - ctr); a++)
{
StringBuilder s = new StringBuilder(10-ctr);//Does... something
for (int x = a; x <= (a+ctr-1); x++) //Checks every possibility in the row
{
s.append(table[row][x]);
temp = s.toString();
if (temp.equals(search))
{
return true;
}
}
}
}
// TOP TO BOTTOM / Y-AXIS
for (int column = 0; column < 10; column++)
{
for (int b = 0; b <= (10 - ctr); b++)
{
StringBuilder v = new StringBuilder(10-ctr);
for (int y = b; y <= (b+ctr-1); y++)//checks every possibility in grid
{
v.append(table[y][column]);
temp = v.toString();
if (temp.equals(search))
{
return true;
}
}
}
}
return false;//if word isn't in grid it returns as false, which then displays an error message
}
答案 0 :(得分:1)
编辑...... Java版!!! (我现在没有Java编译器,但我认为这是正确的......)
在代码的第二行,我们计算反向字符串; 有成千上万种方法可以做到这一点,但这个方法很明显(我假设你的字符串中没有空格......):
int ls = search.length(); // length of initial string
StringBuilder sb = new StringBuilder(); // temporary place to store growing string
for(int ii=ls-1;ii>=0; ii--) {
sb.append(search.charAt(ii)); // build the string one character at a time
}
hcraes = sb.toString(); // convert to "regular" string
现在,在您拥有该行的每一点
if (temp.equals(search))
将该行更改为
if (temp.equals(search) || temp.equals(hcraes))
应该这样做。