黑马程序员技术交流社区

标题: 斗地主程序,为什么打乱顺序后还是一副牌 [打印本页]

作者: ouyzm    时间: 2016-10-12 00:39
标题: 斗地主程序,为什么打乱顺序后还是一副牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeMap;


public class pukepai {

        /**
         * 模拟斗地主洗牌和发牌并对牌进行排序的代码实现
         */
        public static void main(String[] args) {
                String[] color ={"黑桃","梅花","方块","红桃"};
                String[] pai = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
                HashMap<Integer,String> hm = new HashMap<>();
                int i = 0;
                for (String st : pai) {
                        for (String str : color) {
                        hm.put(i++, str.concat(st))        ;
                        }
                }
                hm.put(52, "小王");
                hm.put(53, "大王");
                //System.out.println(hm);
               
                TreeMap<Integer,String> ouy = new TreeMap<>();
                TreeMap<Integer,String> gaojin = new TreeMap<>();
                TreeMap<Integer,String> zhouxingchi = new TreeMap<>();
                TreeMap<Integer,String> dipai = new TreeMap<>();
                ArrayList <Integer> al = new ArrayList<>();
                  Set<Integer> keySet = hm.keySet();
                  for (Integer integer : keySet) {
                        al.add(integer);
                }
                  System.out.println(al);
                  System.out.println("-----------");
                  Collections.shuffle(al);
                System.out.println(al);
               
                for (Integer in : al) {
                        if(in>=al.size()-3){
                                dipai.put(in, hm.get(in));
                        }
                        if(in%3==0){
                                ouy.put(in, hm.get(in));
                        }if(in%3==1){
                                gaojin.put(in, hm.get(in));
                        }if(in%3==2){
                                zhouxingchi.put(in, hm.get(in));
                        }
                }
                System.out.println(ouy);
                System.out.println("-----");
                System.out.println(gaojin);
                System.out.println("-----");
                System.out.println(zhouxingchi);
                System.out.println("-----");
                System.out.println(dipai);
        }

}



作者: System.style    时间: 2016-10-12 09:52
你在问什么问题?你为什么要欺骗我残存的智商

作者: gao5867565    时间: 2016-10-12 17:48
for (Integer in : al) {
                        if(in>=al.size()-3){
                                dipai.put(in, hm.get(in));
                        }
                        if(in%3==0){
                                ouy.put(in, hm.get(in));
                        }if(in%3==1){
                                gaojin.put(in, hm.get(in));
                        }if(in%3==2){
                                zhouxingchi.put(in, hm.get(in));
                        }

这里错了,你直接判断牌的索引 来存取肯定不行啊,就像 if(in>=al.size()-3),符合规则的就只有最后3张牌,你自己定义个计数器,分别存取才行,要不就使用普通for,使用i 来判断发牌
作者: gao5867565    时间: 2016-10-12 17:49
for (Integer in : al) {
                        if(in>=al.size()-3){
                                dipai.put(in, hm.get(in));
                        }
                        if(in%3==0){
                                ouy.put(in, hm.get(in));
                        }if(in%3==1){
                                gaojin.put(in, hm.get(in));
                        }if(in%3==2){
                                zhouxingchi.put(in, hm.get(in));
                        }

这里错了,你直接判断牌的索引 来存取肯定不行啊,就像 if(in>=al.size()-3),符合规则的就只有最后3张牌,你自己定义个计数器,分别存取才行,要不就使用普通for,使用i 来判断发牌
作者: ouyzm    时间: 2016-10-15 00:37
非常感谢.这么热心的回复!!!赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2