有更好方法的大神,分享一下思路,或者代码,非常感谢。
代码如下,仅供参考。觉得注释少了的童鞋可以提问。
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/**
* 需求:创建一副扑克牌,洗牌,发牌
* 思路:扑克牌一共54张,留下3张地主牌,将剩下的51张牌等分给3个对象。
* @author
*/
public class qqDouDiZhu {
public static void main(String[] args) {
/**定义一个集合,用于接收一整副扑克牌*/
LinkedList<String> ld = new LinkedList<String>();
/**定义三个字符串,用于接收发完后的三份扑克牌*/
LinkedList<String> str1 = new LinkedList<String>();
LinkedList<String> str2 = new LinkedList<String>();
LinkedList<String> str3 = new LinkedList<String>();
while(true){
Scanner sn = new Scanner(System.in);
System.out.println("1:开始斗地主");
System.out.println("2:退出斗地主");
System.out.println("请输入数字");
String st = sn.nextLine();
switch(st){
case "1":
/**定义两个数组,用来创建一副扑克牌*/
String[] colors = {"黑桃","红桃","梅花","方片"};
String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
/**循环装牌*/
for(String co : colors){
for(String nb : numbers){
ld.add(co.concat(nb));
}
}
ld.add("大鬼");
ld.add("小鬼");
/**洗牌*/
Collections.shuffle((LinkedList<String>) ld);
/**打印洗牌之后的顺序,用于验证发牌的顺序是否正确*/
System.out.println("洗牌之后的顺序:"+ld);
/**发牌*/
for(int x=1; x<18; x++){
str1.add(ld.removeFirst());
str2.add(ld.removeFirst());
str3.add(ld.removeFirst());
}
System.out.println("地主str1的牌是:"+ str1);
System.out.println("农民str2的牌是:"+ str2);
System.out.println("农民str3的牌是:"+ str3);
System.out.println("地主底牌:"+ld);
case"2":
break;
}
}
}
} |