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++;
        }
    }
}

上記は、クロスワード パズル ボードで単語リストの最初の 2 つの単語を交差させる方法です。私の質問はその部分です:

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

交点の前の文字を取得し、交点の行の上に逆方向に印刷します。私の脳は今、さまざまなことで過負荷になっており、文字を正しい順序に並べる方法を理解できないようです. 問題を表示するために画像を添付することはできませんが、たとえば、文字「o」で水平方向の単語「clowning」と交差する垂直方向の単語「throwing」は、o の前に「rht」を出力します (「」を出力する必要がある場合)。 thr")。誰か助けてくれませんか?よろしくお願いします!

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 に答える