2015-06-25 76 views
-2

我正在制作一款二十一点游戏,需要在每次迭代开始时洗牌。这里重要的两类是甲板和游戏。在Deck中,我创建了一个名为deck的ArrayList来容纳52张牌。我还创建了一个名为shuffle的方法。为什么我的调用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

没有机会给你一个坚实的答案。你是说你的shuffe代码不会在没有显示给我们的情况下生成所需的输出。 – SomeJavaGuy

+4

您可能会更多地展示您的代码,以便我们了解更多的上下文 – Stultuske

+0

构建手的代码在哪里? – Luke

回答

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(); 
+3

得到它其实它不会被设置为null。由于它是一个本地未初始化的变量,代码甚至不会编译。 OP没有显示真实的代码。 –

+0

你说得对,我只是有一个想法,没有测试@JBNizet – maskacovnik

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(); 
..... 
} 
相关问题