lqlqlq1111 2017-05-11 17:14 采纳率: 0%
浏览 1058

新手在学Java,求教下面利用集合编写斗地主的代码错在哪里了?万分感谢!

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Random;
import java.util.Set;

//    张三,李四,王五三个人打斗地主,三人约定,洗牌后,
//    随机抽取一张"明牌"并夹在中间;然后依次抓牌,谁抓到这张便自动作为地主,并收取最后三张。
//    要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);
//    思路:
//        1.定义一个Map集合存储一副扑克牌;List存储编号;
//        2.洗牌;
//        3.随机抽取一个索引(该值必须在倒数三张之前),用于表示"明牌",在发牌
//        时谁抓到这一张便作为"地主";
//        4.依次给三个人(张三,李四,王五)发牌,并监督谁作为地主;地主自动收取最后三张。
//      5.打印地主名;
//      6.最后以排序后的方式打印每个人手里的牌
public class Demo03 {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        // 花色
        ArrayList flower = new ArrayList();
        Collections.addAll(flower, "♣", "♦", "♠", "♥");
        // 数字
        ArrayList number = new ArrayList();
        Collections.addAll(number, "3", "4", "5", "6", "7", "8", "10", "J", "Q", "K", "A", "2");
        Integer a = 1;
        for (String number1 : number) {
            for (String flower1 : flower) {
                String s = flower1 + number1;
                map.put(a++, s);
            }
        }
        map.put(53, "小☆");
        map.put(54, "大★");
        System.out.println(map);

        Set keySet = map.keySet();
        ArrayList list = new ArrayList();
        for (Integer integer : keySet) {
            list.add(integer);
        }
        System.out.println(list);

        Collections.shuffle(list);

        System.out.println(list);

        ArrayList p1 = new ArrayList();
        ArrayList p2 = new ArrayList();
        ArrayList p3 = new ArrayList();
        ArrayList p0 = new ArrayList();
        System.out.println(list.size());
        for (int i = 0; i < list.size(); i++) {
            if (i >= 51) {
                p0.add(list.get(i));
            } else {
                if (i % 3 == 0) {
                    p1.add(list.get(i));
                } else if (i % 3 == 1) {
                    p2.add(list.get(i));
                } else if (i % 3 == 2) {
                    p3.add(list.get(i));
                }
            }

        }
        System.out.println(p1);
        System.out.println(p2);
        System.out.println(p3);
        System.out.println(p0);
        Random r = new Random();
        Integer dz = null;
        while ((p0.contains(dz)) ){
            dz = r.nextInt(54) + 1;
            
        }
        
        dz(p1, dz, p0);
        dz(p2, dz, p0);
        dz(p3, dz, p0);

        ArrayList player1 = new ArrayList();
        ArrayList player2 = new ArrayList();
        ArrayList player3 = new ArrayList();

        for (Integer integer : p1) {
            player1.add(map.get(integer));
        }
        for (Integer integer : p2) {
            player2.add(map.get(integer));
        }
        for (Integer integer : p3) {
            player3.add(map.get(integer));
        }
        System.out.println("张三=" + player1);
        System.out.println("李四=" + player2);
        System.out.println("王五=" + player3);

    }

    public static void dz(ArrayList p, Integer dz, ArrayList p0) {
        System.out.println("试试");
        int count = -1;
        for (int i = 0; i < p.size(); i++) {
            if (dz.equals(p.get(i))) {
                count = i;
            }
            
        }
        if (count != -1) {
            for (int j = 0; j < p0.size(); j++) {
                System.out.println("试试1");
                p.add(p0.get(j));
                System.out.println(p + "");
            }
        }
        if (count == -1) {
            return;
        }

    }

}

  • 写回答

7条回答

  • ljheee 2017-05-12 01:12
    关注

    这代码 哪里有问题的呢

    评论

报告相同问题?

悬赏问题

  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题