2013-05-22 34 views
2

我有這種方法:
我想分配一張卡的圖片到他們的iconCards[][]配置文件。照片位於圖像/文件夾中,例如, images/AS.gif (Ace of Spades), images/AD.gif (Ace of Diamonds)試圖分配卡圖片,但它給了我錯卡

static void loadCardIcons(){ 
    int l =0; 
    int k =0; 

    while (k < 14){ 
     for (l = 0; l < 4; l++){ 
      String card = "images/" + Character.toString(valueRanks[k]) + "C.gif"; 
      iconCards[k][l] = new ImageIcon(card); 
      System.out.println(k + " " + l + " " + card); 
      card = "images/" + Character.toString(valueRanks[k]) + "D.gif"; 
      iconCards[k][l++] = new ImageIcon(card); 
      System.out.println(k + " " + l + " " + card); 
      card = "images/" + Character.toString(valueRanks[k]) + "H.gif"; 
      iconCards[k][l++] = new ImageIcon(card); 
      System.out.println(k + " " + l + " " + card); 
      card = "images/" + Character.toString(valueRanks[k]) + "S.gif"; 
      iconCards[k][l++] = new ImageIcon(card); 
      System.out.println(k + " " + l + " " + card); 
      k++; 
     } 
    } 
    iconBack = new ImageIcon("images/BK.gif"); 
} 


...12 3 images/KS.gif 
13 0 images/XC.gif 
13 1 images/XD.gif 
13 2 images/XH.gif 
13 3 images/XS.gif 

*13 
2 
images/XS.gif* 

你可以看到value = 13 and suit = 2。根據上面的輸出卡應該是images/XH (JokerHearts),但它打印我XS。爲什麼?這是運行它的方法。無法瞭解幾周內發生的事情。

static public Icon getIcon(Card card){ 
    loadCardIcons(); 

    return iconCards[valueAsInt(card)][suitAsInt(card)]; 
} 

回答

4

問題是在這裏

iconCards[k][l++] = new ImageIcon(card); 

l++l後增量操作。因此給予l = 0k = 0,你將訪問

iconCards[0][0] 

然後l會去1。您可能想要使用前增量++l版本。

所以你l(作爲索引iconCards)只上升到價值2(對於images/XH.gif),不3(用於images/XS.gif)。

有關遞增/遞減運算符的說明,請參見Oracle tutorial here以瞭解其用法。

+0

這很完美。 Sotirios非常感謝! –

+0

@NurgulAlshyn不客氣。考慮接受一個答案,如果它有幫助。 –