Trise0813 2017-05-24 06:17 采纳率: 0%
浏览 763

求帮助看下代码哪出错了(用集合做的)

package poker.com;

import java.util.*;

public class PokerShuffleCards {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<String> color = new ArrayList<String>();
    color.add("❤");
    color.add("♠");
    color.add("♦");
    color.add("♣");
    ArrayList<String> number = new ArrayList<String>();
    for(int i=3;i<=10;i++){
        number.add(i+"");
    }
    number.add("J");
    number.add("Q");
    number.add("k");
    number.add("A");
    number.add("2");
    HashMap<Integer, String> map = new HashMap<Integer, String>();
    int index = 0;//表示牌的编号
    for(String thisNumber:number){//外循环控制数字字符串
        for(String thisColor:color){//内循环控制花色
            map.put(index++, thisNumber + thisColor);
        }
    }
    //加入大小王
    map.put(index++, "小王");
    map.put(index++, "大王");
    //创建数字集合,代表54张牌
    ArrayList<Integer> cards = new ArrayList<Integer>();
    for(int i=0;i<=53;i++){
        cards.add(i);
    }
    //洗牌,使用Collections的shuffle()方法
    Collections.shuffle(cards);
    //创建三个玩家和底牌
    ArrayList<Integer> iplayer01 = new ArrayList<Integer>();
    ArrayList<Integer> iplayer02 = new ArrayList<Integer>();
    ArrayList<Integer> iplayer03 = new ArrayList<Integer>();
    ArrayList<Integer> iSecretCards = new ArrayList<Integer>();
    //遍历这副洗好的牌,遍历过程中,将牌发到三个玩家手中
    for(int i=0;i<cards.size();i++){
        if(i >=51 ){
            iSecretCards.add(cards.get(i));
        }else{
            //与3取余为0的发给玩家1
            if(i%3 == 0) iplayer01.add(cards.get(i));
            //与3取余为1的发给玩家2
            else if(i%3 == 1) iplayer02.add(cards.get(i));
            //与3取余为2的发给玩家3
            else iplayer03.add(cards.get(i));
        }
    }
    //对每个人手中的牌排序,使用Collections工具类中的sort()方法
    Collections.sort(iplayer01);
    Collections.sort(iplayer02);
    Collections.sort(iplayer03);
    //对应数字形式中的每个人手中的牌。定义字符串形式的牌
    ArrayList<String> sPlayer01 = new ArrayList<String>();
    ArrayList<String> sPlayer02 = new ArrayList<String>();
    ArrayList<String> sPlayer03 = new ArrayList<String>();
    ArrayList<String> sScretCards = new ArrayList<String>();
    //遍历主键,从map中获得纸牌
    for (Integer key:iplayer01){  //第一个玩家手中的牌
        sPlayer01.add(map.get(key));    
    }
    for (Integer key:iplayer02){ //第二个玩家手中的牌
        sPlayer02.add(map.get(key));
    }
    for (Integer key:iplayer03){ //第三个玩家手中的牌
        sPlayer03.add(map.get(key));
    }
    for (Integer key:iSecretCards){ //底牌
        sScretCards.add(map.get(key));
    }
    //看牌
    System.out.println("玩家1:"+iplayer01);
    System.out.println("玩家2:"+iplayer02);
    System.out.println("玩家3:"+iplayer03);
    System.out.println("底牌:"+iSecretCards);
}

}

运算结果:
玩家1:[0, 3, 5, 8, 10, 11, 14, 15, 24, 25, 27, 35, 39, 43, 44, 52, 53]
玩家2:[1, 6, 16, 17, 18, 21, 23, 26, 28, 29, 36, 38, 40, 41, 42, 45, 50]
玩家3:[2, 4, 9, 12, 13, 19, 22, 30, 31, 32, 33, 37, 46, 47, 48, 49, 51]
底牌:[7, 34, 20]

求帮助,帮我分析是哪里出错了

  • 写回答

7条回答 默认 最新

  • Hefei19881002 2017-05-24 06:14
    关注

    你想要输出什么效果????

    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划