hu848915733 2020-06-11 12:45 采纳率: 0%
浏览 83
已采纳

为什么我的结果不是一个人有十几个编号 而是一个人只有三个编号 有没有大佬给看一下

package cz.bxg.demo08;

import java.util.*;

/*
需求:模拟斗地主发牌
步骤:
1.买牌
2.洗牌
3.发牌
4.看牌
/
public class SendPokerText {
public static void main(String[] args) {
//1.买牌
************************************************************************

    //1.1定义一个双列集合,键:表示牌的编号,值:表示具体的牌。规则:编号越小,牌越小.|
    Map<Integer, String> pokers = new HashMap<>();
    //1.2定义一个单列集合,用来存储所有牌的编号.
    List<Integer> list = new ArrayList<>();
    //1.3具体的买牌动作。
    //普通牌52.
    String[] colors = {"♠", "♥", "♣", "♦"};
    String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2",};

    int num = 0;//表示牌的编号
    //通过循环嵌套 造 普通牌
    for (String number : numbers) {//外循环,来获取所有的点数
        for (String color : colors) {//内循环,获取所有的花色  内循环一圈外循环一次
            String poker = color + number;
            //将牌的编号,具体的牌放入双列集合中
            pokers.put(num, poker);
            //将牌的编号放在单列集合中
            list.add(num);
            //每增加一张牌,编号要自增1
            num++;
        }
    }
    //大小王
    pokers.put(num, "小王");
    list.add(num++);
    pokers.put(num, "大王");
    list.add(num++);
    //打印牌就可以了。
    System.out.println("所有的牌" + pokers);
    System.out.println("牌的编号" + list);

//**********************************************************************************************************
//2.洗牌
Collections.shuffle(list);
System.out.println("洗牌后" + list);
//**********************************************************************************************************
//3.发牌

// 3.1定义4个集合 分别表示3个玩家和底牌
List liuYiFei = new ArrayList<>();
List zhaoliying = new ArrayList<>();
List xiaohei = new ArrayList<>();
List dipai = new ArrayList<>();
// 3.2具体的发牌动作,具体的索引和取模,决定发给谁
for (int i = 0; i < list.size(); i++) {
//获取编号
Integer pokerNum = list.get(i);
System.out.println(pokerNum);//牌的顺序
if (i >= list.size() - 3) {//如果牌剩余3张那么久是底牌
dipai.add(pokerNum);//最后三张放入dipai的集合中
} else if (i / 3 == 0) {
liuYiFei.add(pokerNum);
} else if (i / 3 == 1) {
zhaoliying.add(pokerNum);
} else if (i / 3 == 2) {
xiaohei.add(pokerNum);

        }


    }
    //        3.3查看玩家
    System.out.println("刘亦菲:" + liuYiFei);
    System.out.println("赵丽颖:" + zhaoliying);
    System.out.println("小黑:" + xiaohei);
    System.out.println("底牌:" + dipai);

}

}

结果是:
刘亦菲:[9, 27, 34]
赵丽颖:[12, 26, 13]
小黑:[15, 28, 25]
底牌:[4, 36, 31]

  • 写回答

1条回答 默认 最新

  • weixin_44567990 2020-06-11 14:28
    关注

    兄弟,自己说取模发牌结果最后变成了除法...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型