2011-11-21 120 views
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); 

它採用交叉點前的字母並將它們向後打印在交叉點行的上方。我的大腦現在有很多不同的東西,我似乎無法理解如何使字母按照正確的順序排列。我不能附加圖像來顯示我的問題,但例如,在字母「o」處與垂直單詞「clowning」相交的垂直單詞「投擲」在o之前打印出「rht」(當它應該打印出來時「 THR「)。有人可以幫忙嗎?將不勝感激!

+0

'對(INT z = 0的; Z置於 user1055678

+0

把答案放在答案部分,並將其標記爲正確的。 –

回答

0

這將這樣的伎倆: for (int z = 0; z < j; z++) crossword[t - j + z][s] = a1.get(i).charAt(z);

附:這個問題還沒有被關閉(即使你確實回答了你的問題)。你應該將這個答案標出(或者,如果你不想給我點數,你輸入的答案)是正確的,所以這個問題不會留在未答覆的部分!