我有这个方法:
我正在尝试将卡片的图片分配到他们的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)];
}
答案 0 :(得分:4)
问题在这里
iconCards[k][l++] = new ImageIcon(card);
l++
是l
上的后增量运算符。因此,在l = 0
和k = 0
的情况下,您可以访问
iconCards[0][0]
然后l
将转到1
。您可能希望使用预增量++l
版本。
因此,您的l
(作为iconCards
的索引)仅上升到值2
(适用于images/XH.gif
),而不是3
(适用于{{ 1}})。
有关其使用的说明,请参阅增量/减量运算符的Oracle tutorial here。