java在不同類中調用一個集合,發牌方法調用撲克牌類里的list為0???
--------首先是撲克牌類的list集合, ----------------------------------------------------------
package cardGame;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ShuffleAllCards {
public List<String> cards;
public ShuffleAllCards(){
this.cards = new ArrayList<String>();
}
/**
* 生成所有52張牌
* */
public void CardsCreate(){
System.out.println("-----------游戲開始!-----------");
//通過遍歷得到所有52張牌.
String[] number = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};?
String[] color = {"黑桃","紅桃","梅花","方塊"};
for(int i=0;i<number.length;i++){
for (int j = 0; j < color.length; j++) {
//第一個是 黑桃A, 然后 紅桃A,?
String OneCard = color[j]+number[i];
//每一次都加到List里,list是有序的.
cards.add(OneCard);
}
}
if(cards.size() == 52){
System.out.println("-----------生成撲克牌成功-------");
}
}
/**
* 打亂所有52張牌的順序
* */
public void ShuffleCards(){
System.out.println("-----------開始洗牌-----------");
Collections.shuffle(cards);
System.out.println(cards.size());? //-----------------------這里輸出的是52,是對的--------------------
System.out.println("-----------洗牌結束-----------");
}
}
---然后在游戲類里的發牌方法里調用上面的list集合,給玩家的手牌, 想先看看list的大小, 居然是0,但是在撲克牌類里是52呀...-------------
package cardGame;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class LetUsPlay {
Scanner console = new Scanner(System.in);
//定義一個玩家List
public List<Players> players;
public LetUsPlay() {
//初始化玩家List
players = new ArrayList<Players>();
}
/**
* 創建玩家方法
* */
public void CreatePlayers(){
System.out.println("-----------登記玩家信息-----------");
System.out.println("一共有幾位玩家呢?");
int playerCounter = console.nextInt();
for(int i=0;i<playerCounter;i++){
//確定一共有幾個玩家
System.out.println("請輸入第"+(i+1)+"位玩家ID: ");
int playerId = console.nextInt();
System.out.println("請輸入第"+(i+1)+"位玩家姓名: ");
String playerName = console.next();
Players player = new Players(playerId,playerName);
players.add(player);
}
for (Players players : players) {
System.out.println(players.name);
}
}
/**
* 為玩家發牌,之前撲克牌已經打亂順序了
* */
public void GiveCards(){
Players player = new Players();
ShuffleAllCards giveCards = new ShuffleAllCards();
System.out.println(giveCards.cards.size());? //-----------這里輸出的list的size是0???應該是52呀??
}
}
2018-08-26
?new ShuffleAllCards(); 調用了構造方法
public ShuffleAllCards(){
this.cards = new ArrayList<String>();
}
構造方法里已經將cards重新new了。
ShuffleAllCards 類的引用應該在main函數里執行
你這里直接用cards就好了,反正是成員變量