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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算