
正文
java判断顺子代码 java 判断
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用java如何判断扑克牌同花顺
扑克牌有两个属性,花色和牌面大小,可以分别比较花色和牌面大小是否递增或递减来确定是不是同花顺.但是由于扑克牌会有JQKA,所以牌面大小最好以数组或者字符串java判断顺子代码的方式实现,通过比较下标来比较大小,以下是大概的代码
public class PuKe {
private String color;
private String num;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public PuKe(String color, String num) {
super();
this.color = color;
this.num = num;
}
public static void main(String[] args) {
ListPuKecard = new ArrayListPuKe();
card.add(new PuKe("black", "2"));
card.add(new PuKe("black", "3"));
card.add(new PuKe("black", "4"));
card.add(new PuKe("black", "5"));
card.add(new PuKe("black", "6"));
//这里因为10是两位数且牌面里面用不到1,所以直接用1代替10
String check = "234567891JQKA";
boolean flage =true;
//自定义比较器,用num在check里的下标大小作为比较依据排序
Collections.sort(card, new ComparatorObject() {
@Override
public int compare(Object o1, Object o2) {
PuKe er1 = (PuKe) o1;
PuKe er2 = (PuKe) o2;
Integer org1 = (int)(er1.getNum() == null ? 0.0 : check.indexOf(er1.getNum()));
Integer org2 = (int)(er1.getNum() == null ? 0.0 : check.indexOf(er2.getNum()));
return org1.compareTo(org2);
}
});
for (int i = 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.
其实实现方法很多,java判断顺子代码我这么写是因为最近在复习,这么写用到的知识点相对会多一点.
相关问答
Q1: java代码,判断五张牌是不是顺子
按点数,先大小排序、判断是不是第n+1张的点数是否n张的点数加1
~~~~~~~~~~
Q2: java 二位数组中 判断扑克的最大的牌型
写代码不难..给java判断顺子代码你一个思路 你就按照这个思路写.
首先按照7张牌的大小 存到一个hashmapinteger,integer 存的每种数字 及其 出现的次数..
当 hashMap 的count 5 意味着 java判断顺子代码他们不可能存在 同花顺 同花之类的..那么你可以轻松的判断里面到底是 4条 3条之类的 这个很简单...
当 count = 5的时候 你就需要判断是否为同花 或者同花顺java判断顺子代码了..
这个也简单 你在按照花色 进行一次 hashmap 然后看看是否有同一个花色超过5的的..如果没有 则不可能为同花...同样 顺子的判断也根据所有的数字 去重复之后排序..看有没有5个连续的数字..如果没有 就不是顺子..
这样就可以搞定java判断顺子代码了
Q3: JAVA 扑克牌
package justforjoke.pkGame;
//花色
public class CardsType {
private static final String [] ct={
"黑桃",
"红桃",
"梅花",
"方块"
};
public static String getType(int i){
return ct[i];
}
public static int com(String s,String c){
int s1=find(s);
int s2=find(c);
if(s1==-1)return 100;
if(s2==-1)return -100;
return s2-s1;
}
private static int find(String s){
int i=-1;
for(String st:ct ){
i++;
if(st.equals(s))return i;
}
return i;
}
}
package justforjoke.pkGame;
//牌码
public class Num {
private static final String[]n={
"0","2","3","4","5","6","7","8","9","10","J","Q","K","A"
};
public static String getN(int i){
if(i1||i13)return null;
return n[i];
}
}
package justforjoke.pkGame;
//每张牌
public class Cards implements Comparable{
private String type;
private int num;
public Cards(){}
public Cards(String s,int n){
this.type=s;
this.num=n;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public boolean equals(Object o){
if(!(o instanceof Cards))return false;
Cards c=(Cards)o;
if(this.num==c.getNum()this.type.equals(c.getType()))return true;
return false;
}
public int compareTo(Object o) {
if(!(o instanceof Cards))return 1;
Cards c=(Cards)o;
int bjjg;
if((bjjg=CardsType.com(this.type,c.getType()))!=0)return bjjg;
return c.getNum()-this.num;
}
public String toString(){
return type+" : "+Num.getN(num);
}
}
package justforjoke.pkGame;
//一副新扑克
public class PkC {
public static Cards[] getNewCards(){
Cards[] nc=new Cards[52];
int k=0;
for(int i=0;i4;i++){
String t=CardsType.getType(i);
for(int j=1;j14;j++){
nc[k++]=new Cards(t,j);
}
}
return nc;
}
}
package justforjoke.pkGame;
import java.util.Arrays;
import java.util.Random;
//游戏,包含两幅扑克
public class Game {
private Cards[]gc=new Cards[104];
private int[] num=new int[104];
private int length=103;
public Game(){
int i=0;
for(Cards c:PkC.getNewCards()){
gc[i++]=c;
}
for(Cards c:PkC.getNewCards()){
gc[i++]=c;
}
for(int j=0;j104;j++)num[j]=j;
}
//发牌
public Cards[] fp(){
Cards[] pf=new Cards[5];
Random r=new Random();
for(int i=0;i5;i++){
if(length1)break;
int t=r.nextInt(length);
int tem=num[t];
num[t]=num[length];
num[length--]=tem;
pf[i]=gc[tem];
}
return pf;
}
//去掉函数中的注释会打印游戏的中间过程
public static String cp(Cards[] c){
String result1="同花";
String result2="顺子";
String result3="";
for(int i=0;i4;i++){
if(!c[i].getType().equals(c[i+1].getType()))result1="";
if(c[i+1].getNum()-c[i].getNum()!=1)result2="";
if(c[i].equals(c[i+1]))result3="对子";
//System.out.print(c[i]+" || ");
}
//System.out.println(c[4]);
return result1+result2+result3;
}
public static void main(String []args){
Game g=new Game();
while(true){
Cards[] pf=g.fp();
if(pf[4]==null){
System.out.println("游戏失败!!");
break;
}
Arrays.sort(pf);
String r=Game.cp(pf);
if(!r.equals("")){
System.out.println(r);
for(Cards cs:pf)System.out.print(cs+" || ");
break;
}
}
}
}
····上面有5个类。Came类就是用来游戏的。它会打印游戏结果。
题目所要求的都解决了,不过有一点,那就是排序时又大到小排的。
这个在写代码的时候没有注意到。
代码只会打印游戏的结果,如果你想打印其他的可以在代码中添加。也可以去掉一些注释查看中间过程
Q4: 怎么用javascript写一个给俩人发三张牌,然后比较大小的程序 同花的大于顺子大于三条大于对子大于杂牌 谢谢
/*
* 这是一个 JavaScript 代码片段速记器。
*
* 您可以输入一些 JavaScript 代码,然后右击或者从 执行 菜单中选择执行下列操作:
* 1. 运行选中的代码。
* 2. 打开对象查看器查看运行结果。
* 3. 将运行结果作为注释添加到选中内容的后面显示。
*/
function getCard(){
//abcd表示1-k;4321表示黑桃、红桃、梅花、方块
return "abcdefghijklm".substr(parseInt(Math.random()*13),1)+"4321".substr(parseInt(Math.random()*4),1);
}
function sortCard(arr){
arr.sort();
return arr;
}
function calCard(cardArr){
bArr =sortCard(cardArr);
var len = bArr.length;
//下面利用array的属性来判断是否为顺子、同花、三张、对子等,用level值来表示
}
function compareCard(){
//比较每个人level值
}
//p表示人数,n表示牌数
function getHisCard(p,n){
if(p*n 52){
alert("牌不够分了");
return false;
}
var person = [],
tstr = "",//用来保存已发的牌
i = 0,
tr = "";
while(p){
i = 0;
person[p] = [];
while(in){
tr = getCard();
if(tstr.indexOf(tr) === -1){
tstr = tstr+"/"+tr;
person[p].push(tr);
i++;
}
}
person[p]["level"] = calCard(person[p]);
p--;
}
return person;
}
alert(getHisCard(2,3))
太晚了。。。要睡觉了,有时间再写吧:
把方法再分离下,然后封装成对象,就好用了
关于java判断顺子代码和java 判断的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







