文字搜索方法2



如果可能的话,我正在寻找有关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)没有变化,因此您将在同一个正方形中重复写入字母。

最新更新