[英]Printing Position 0 in array that has been created through method calls
我正在嘗試使用兩個單獨的類來創建卡片組,這兩個類將調用createCard方法,並將此卡片返回並將其附加到我的DeckOfCards類中的數組中。 就我正在學習的數組而言,這似乎是一次冒險。 截至目前,我當前的問題是試圖找出為什么當我請求打印附錄0時收到錯誤的卡位置。 因此,如果我輸入2 NumberOfRanks和2 NumberOfSuits並嘗試打印出位置0,我將收到第二個位置。 如果嘗試使用3&3打印,我將獲得第三名。
抱歉,該文本塊。
有什么想法嗎?
public class DeckofCards {
private int NumberOfRanks;
private int NumberOfSuits;
private int SizeOfDeck;
private int whatSuit;
public void DeckofCards ( int NumberOfRanks, int NumberOfSuits ) {
this.NumberOfRanks = NumberOfRanks;
this.NumberOfSuits = NumberOfSuits;
SizeOfDeck = NumberOfRanks * NumberOfSuits;
Cards newCard = new Cards();
newCard.setCards ( NumberOfRanks, NumberOfSuits );
String[] newDeck = new String [ SizeOfDeck ];
int counter;
for ( counter=0; counter <= NumberOfRanks; counter++ ) {
for ( whatSuit = 1; whatSuit <= NumberOfSuits; whatSuit++ ){
newCard.createCard ( counter, whatSuit );
newDeck[counter] = newCard.createCard ( counter, whatSuit );
System.out.println ( newDeck[ counter ] );
}
}
System.out.println ( newDeck [0] );
}
public String createCard( int newCard, int whatSuit ) {
createCard = newCard;
theNumber = Integer.toString(createCard + 1);
theSuit = Integer.toString ( whatSuit );
theCard = ( "S" + theSuit + "R" + theNumber );
return theCard;
}
Output:
How many suits? 2
How many ranks? 2
S1R1
S2R1
S1R2
S2R2
S1R3
S2R3
S2R1 //Attempt to print position 0
Output:
How many suits? 3
How many ranks? 2
S1R1
S2R1
S3R1
S1R2
S2R2
S3R2
S1R3
S2R3
S3R3
S3R1 //Attempt to print position 0
問題是您不是在每次添加卡時都不增加counter
,而是在每個完整的內循環中只增加一次。 通過重復使用相同的索引,您將覆蓋數組中的值。
更改外部循環以遍歷rank
並使用類似以下內容:
int counter = 0;
for (int rank = 1; rank <= NumberOfRanks; rank++) {
for (whatSuit = 1; whatSuit <= NumberOfSuits; whatSuit++) {
newDeck[counter++] = newCard.createCard(rank, whatSuit);
System.out.println(newDeck[counter - 1]);
}
}
最佳做法是最小化變量的范圍,因此將whatSuit
刪除為實例字段並使其成為循環變量,即for (int whatSuit; ...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.