为什么我对shuffle方法的调用不起作用?

时间:2015-06-25 06:30:16

标签: java poker blackjack

我正在制作一个二十一点游戏,要求在每次迭代开始时对牌组进行洗牌。这里的两个重要类别是Deck和Game。在Deck中,我创建了一个名为deck的ArrayList来容纳52张牌。我还创建了一个名为shuffle的方法。

public void shuffle(){
    Collections.shuffle(deck);
}

然后,在我的游戏课程中:

cards = new Deck();
String response;
System.out.println("Do you want to play the game? (0-Yes, 1-No)");
if (Integer.parseInt(response)==1){
    cards.shuffle();
    .....
}

从这一点开始,我编写简单的代码来分发卡片并检查播放器与21的接近程度。我将所有代码放在一个迭代5次的while循环中。问题在于,由于某种原因,玩家的手不会改变每一轮(即cards.shuffle()不会改变牌组)。为什么会这样?如果我不熟悉Java编程,我会道歉。

2 个答案:

答案 0 :(得分:1)

Threre不是用户输入:

cards = new Deck();
String response;
System.out.println("Do you want to play the game? (0-Yes, 1-No)");
if (Integer.parseInt(response)==1){
    cards.shuffle();
    .....
}

response将会null 所以我希望这样的事情:

cards = new Deck();
Scanner sc = new Scanner(System.in);
String response;
System.out.println("Do you want to play the game? (0-Yes, 1-No)");
response=sc.nextLine();
if (Integer.parseInt(response)==1){
    cards.shuffle();
    .....
}
sc.close();

答案 1 :(得分:1)

Integer.parseInt(response)但你在哪里得到这个response,你忘了从用户那里得到它

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Do you want to play the game? (0-Yes, 1-No)");
int response = Integer.parseInt(br.readLine());
if(response==1){
cards.shuffle();
.....
}