0
public void fill(ArrayList<String> a1) {
    int i = 0;
    while (i < a1.size()) {
        if (i == 0) {
            for (int j = 0; j < a1.get(i).length(); j++)
                crossword[ROWS / 2][(COLUMNS / 4) + j] = a1.get(i)
                        .charAt(j);
            i++;
        }
        if (i == 1) {
            outerloop: for (int t = 0; t < ROWS; t++)
                for (int s = 0; s < COLUMNS; s++)
                    for (int j = 0; j < a1.get(i).length(); j++)
                        if (crossword[t][s] == a1.get(i).charAt(j)) {
                            for (int z = 0; z < j; z++)
                                crossword[t - z - 1][s] = a1.get(i).charAt(
                                        z);
                            for (int h = j + 1; h < a1.get(i).length(); h++)
                                crossword[t + h - j][s] = a1.get(i).charAt(
                                        h);
                            crossword[t][s] = a1.get(i).charAt(j);
                            break outerloop;
                        }
            i++;
        }
    }
}

以上是我在填字游戏板上使单词列表的前两个单词相互交叉的方法。我的问题是:

 for (int z = 0; z < j; z++)
 crossword[t - z - 1][s] = a1.get(i).charAt(z);

它获取交叉点前面的字母并将它们向后打印到交叉行上方。我的大脑现在充斥着各种各样的事情,我似乎无法理解如何让字母按正确的顺序排列。我无法附加图像来显示我的问题,但例如垂直单词“throwing”与字母“o”处的水平单词“clowning”相交会在 o 之前打印出“rht”(当它应该打印出“苏”)。有人可以帮忙吗?将不胜感激!

4

1 回答 1

0

这可以解决问题: for (int z = 0; z < j; z++) crossword[t - j + z][s] = a1.get(i).charAt(z);

PS这个问题还没有结束(即使你确实回答了你的问题)。您应该将此答案(或者,如果您不想给我分数,您输入的答案)标记为正确,这样问题就不会留在未回答的部分!

于 2011-12-10T23:54:42.610 回答