2D массив печатать буквы в середине сетки в прямом направлении - PullRequest
0 голосов
/ 21 ноября 2011
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);

. Она берет буквы перед точкой пересечения и печатает их назад над строкой пересечения.Мой мозг сейчас перегружен разными вещами, и я не могу понять, как заставить буквы двигаться в правильном порядке.Я не могу прикрепить изображение, чтобы отобразить мою проблему, но, например, вертикальное слово «бросание», которое пересекается с горизонтальным словом «клоунада» на букву «о», выводит «rht» до «о» (когда оно должно быть распечатано)Чет ").Может ли кто-нибудь помочь?Буду очень признателен!

1 Ответ

0 голосов
/ 11 декабря 2011

Это сделает свое дело: for (int z = 0; z < j; z++) crossword[t - j + z][s] = a1.get(i).charAt(z);

P.S. Этот вопрос еще не закрыт (даже если вы ответили на него). Вы должны пометить этот ответ (или, если вы не хотите давать мне баллы, ответ, который вы вставили) как правильный, чтобы вопрос не остался в разделе без ответа!

...