我正在制作一个二十一点游戏,要求在每次迭代开始时对牌组进行洗牌。这里的两个重要类别是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编程,我会道歉。
答案 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();
.....
}