当前位置:首页 » 编程语言 » java同花顺

java同花顺

发布时间: 2024-11-22 04:56:45

Ⅰ 用java如何判断扑克牌同花顺

扑克牌有两个属性,花色和牌面大小,可以分别比较花色和牌面大小是否递增或递减来确定是不是同花顺.但是由于扑克牌会有JQKA,所以牌面大小最好以数组或者字符串的方式实现,通过比较下标来比较大小,以下是大概的代码

publicclassPuKe{
privateStringcolor;
privateStringnum;
publicStringgetColor(){
returncolor;
}
publicvoidsetColor(Stringcolor){
this.color=color;
}
publicStringgetNum(){
returnnum;
}
publicvoidsetNum(Stringnum){
this.num=num;
}

publicPuKe(Stringcolor,Stringnum){
super();
this.color=color;
this.num=num;
}
publicstaticvoidmain(String[]args){
List<PuKe>card=newArrayList<PuKe>();
card.add(newPuKe("black","2"));
card.add(newPuKe("black","3"));
card.add(newPuKe("black","4"));
card.add(newPuKe("black","5"));
card.add(newPuKe("black","6"));
//这里因为10是两位数且牌面里面用不到1,所以直接用1代替10
Stringcheck="234567891JQKA";
booleanflage=true;
//自定义比较器,用num在check里的下标大小作为比较依据排序
Collections.sort(card,newComparator<Object>(){
@Override
publicintcompare(Objecto1,Objecto2){
PuKeer1=(PuKe)o1;
PuKeer2=(PuKe)o2;
Integerorg1=(int)(er1.getNum()==null?0.0:check.indexOf(er1.getNum()));
Integerorg2=(int)(er1.getNum()==null?0.0:check.indexOf(er2.getNum()));
returnorg1.compareTo(org2);
}
});
for(inti=0;i<card.size()-1;i++){
//遍历所有的牌,如果颜色不一样直接跳出循环,不是同花顺
if(!card.get(i).getColor().equals(card.get(i+1).getColor())){
flage=false;
break;
}
//如果上一张减去下一张的差值不是1,说明牌面不是顺子,也不是同花顺,跳出循环
if((int)check.indexOf(card.get(i+1).getNum())-(int)check.indexOf(card.get(i).getNum())!=1){
flage=false;
break;
}
}
if(flage){
System.out.println("牌面是同花顺");
}else{
System.out.println("牌面不是同花顺");
}
}
}

不过这种方法唯一不好的地方是check中不能直接用10,将来展示的时候需要判定,展示的是1时直接改成10.

其实实现方法很多,我这么写是因为最近在复习,这么写用到的知识点相对会多一点.

热点内容
linux支持线程 发布:2025-05-17 21:26:14 浏览:182
元神队伍配置都由什么组成 发布:2025-05-17 21:20:18 浏览:476
闲鱼和安卓哪个赚钱 发布:2025-05-17 21:15:56 浏览:583
c语言一个c源程序 发布:2025-05-17 21:11:44 浏览:314
如何加密手机的文件 发布:2025-05-17 21:11:43 浏览:916
ios开发文件上传 发布:2025-05-17 21:10:40 浏览:983
g92编程 发布:2025-05-17 21:00:31 浏览:170
汇编语言第三版脚本之家 发布:2025-05-17 20:54:26 浏览:399
资源配置最佳状态叫什么 发布:2025-05-17 20:48:58 浏览:84
定义dns服务器的ip 发布:2025-05-17 20:32:37 浏览:954