1 年,3 月
Questions & Answers
32
public class redrawCards {
final int MAX_CARDS = 52;
int[] number = {1,2,3,4,5,6,7,8,9,10,11,12,13};
char[] suit = {'D','H','S','C'}; //diamond,heart,spade,club
String[] card = new String[MAX_CARDS];
public redrawCards(){
boolean finalize = false;
for(int i = 0; i < MAX_CARDS; i++) {
do{
StringBuilder temp = new StringBuilder();
boolean notFinal = false;
int randomSuit = randomNumGenerator(4, 1); //creating random suits
int randomNum = randomNumGenerator(13, 1); //creating random numbers
temp.append(suit[randomSuit - 1]).append(number[randomNum - 1]);
card[i] = temp.toString();
System.out.println(i + ": " + card[i]);
if(i > 1) {
for (int j = 0; j < i; j++) {
System.out.println("......" + card[i] + " " + card[j]);
if (card[i] == card[j]) {
notFinal = true;
System.out.println("000000");
}
}
}
if(!notFinal){
finalize = true;
}
}while (!finalize);
}
printAllCards();
}
private void printAllCards(){
for(int i = 0; i < MAX_CARDS; i++){
System.out.println(card[i]);
}
}
private int randomNumGenerator(int upperBound, int lowerBound){
return (lowerBound + (int)(Math.random() * ((upperBound - lowerBound) + 1)));
}
public static void main(String[] args){
new redrawCards();
}
}
# 1 楼答案
你为什么这么复杂?你可以简单地创建一个列表,循环浏览每件西装和号码,然后将它们保存到列表中。然后你可以调用Collections#shuffle方法并用它洗牌。如果你需要限制你的牌组,你可以在洗牌后退出所有太多的牌