如果可能的话,我正在寻找有关wordsearch程序的更多帮助。这是家庭作业的一部分。这可能看起来有点冗长,我可能会因为这个无聊而大发雷霆,所以我提前道歉><
该方法需要在随机生成的行和列位置将字符串水平插入2d数组(letterGrid)。
在循环10次或直到方法的参数输入letterGrid的循环中。方法1st向接收器发送两条randomPosition()消息,以获取targetRow和targetCol的值。
然后它发送isHorizontalSpaceFree(targetRow,targetCol,word)来检查空间。若并没有空格,则返回循环顶部并尝试新的随机位置——若有空格,则遍历单词并将每个字符分配给letterGrid中的相应组件,然后返回true。
如果在10次尝试后找不到合适的起始位置,则返回false。
这是我迄今为止的代码。。。
{
int targetRow = this.randomPosition(NUMBER_ROWS);
int targetCol = this.randomPosition(WordSearchMaker.NUMBER_COLS - word.length() + 1);
boolean result = true;
for (int i = 0; i < word.length(); i++)
{
if (this.isHorizontalSpaceFree(targetRow, targetCol, word))
{
letterGrid[targetRow][targetCol] = word.charAt(i);
}
}
return result;
}
我的问题是循环以及如何插入单词的每个字符。任何指针都是非常感谢的人;)
提前谢谢。
您正朝着正确的方向前进,但您的代码与您对算法的(正确)描述不太匹配。
在循环遍历单词的每个字母以插入它之前,您需要检查isHorizontalSpaceFree()
。
此外,你还将单词的每个字母都写给:
letterGrid[targetRow][targetCol]
请注意,数组索引(targetRow、targetCol)没有变化,因此您将在同一个正方形中重复写入字母。