2016-04-23 84 views
0

我試圖填充一副紙牌,而且我遇到了一個奇怪的問題。我認爲它有一個簡單的解決方案,但我無法爲我的生活找到它。任何幫助,將不勝感激。Java - For Loop即時滿足要求

基本上發生的是,它進入For循環,初始化的int立即是最終所需大小的大小。即使它是在0

/* Create Deck */ 
String[] deck = new String[52]; 
int y, z, i = 0; 
for (z = 0; z < 3; z++); // Loop while fills deck array 
{ 
    for (y = 0; y < 12; y++); 
    { 
     deck[i] = CreateCard(y, z); //Trigger CreateCard method for each card 
     System.out.println(deck[i]); 
     i++; 
    } 
} 

當代碼進入線deck[i] = CreateCard(y, z); z的值是3且y爲12初始化爲什麼這不是通過整個甲板運行?

+5

你必須在每個循環聲明,例如端部的分號對於(z = 0; z <3; z ++); ' - 所以循環的主體是空的。投票結束爲錯字。 –

+1

請注意,如果您在循環頭文件中聲明瞭'z'和'y' *, 'for for(int z = 0; z <3; z ++)',你會注意到這一點,因爲它們不在'CreateCard'調用的範圍內(應該是'createCard'遵循Java命名約定,btw )。 –

+0

我曾嘗試在循環內聲明它們,但我不明白我得到的錯誤消息:P並感謝命名約定提醒,我仍然對此感到滿意。 – Scott

回答

2

您在for循環聲明的末尾有半列。而且你知道當我們在循環結尾處有一個半列時,循環的主體不會在每次迭代時運行,並且當for循環的條件終止時,循環的主體只執行一次。

更正代碼

/* Create Deck */ 
String[] deck = new String[52]; 
int y, z, i = 0; 
for (z = 0; z < 3; z++) // Loop while fills deck array 
{ 
    for (y = 0; y < 12; y++) 
    { 
     deck[i] = CreateCard(y, z); //Trigger CreateCard method for each card 
     System.out.println(deck[i]); 
     i++; 
    } 
} 
+0

大聲笑.... :) :) :) –