2015-06-25 128 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(); 
..... 
} 
相關問題